Codeup-C语言10.16

题目描述

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。

输入

用空格隔开的10个整数。

输出

输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。
请注意行尾输出换行。

样例输入

1 5 2 4 9 0 3 8 7 6

样例输出

0 5 2 4 6 1 3 8 7 9 

这一题分三步,初步想法就是

1.将这10个数字输入进数组中

2.找到数组中最大和最小数,然后确定他们的位置,最后将最大最小数按照题目要求进行交换

3.将调整过后的数组输出

我的代码虽然提交成功了,但是在第二步还是觉得自己做的比较繁琐,在这里记录一下,希望以后逐渐优化

具体代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define n 10

int input(char a[])
{
    int i=0;
    while(scanf("%d",&a[i])!=EOF)
        i++;
    return 0;
}

int chuli(char *str)
{
    int min=100,max=-1;
    int i,j;
    int temp;
    for(i=0;i<n;i++)
    {
        if(*(str+i)>max)
            max=*(str+i);
        if(*(str+i)<min)
            min=*(str+i);
    }
    for(i=0;i<n;i++)
    {
        if(str[i]==max)
            break;
    }
    for(j=0;j<n;j++)
    {
        if(str[j]==min)
            break;
    }
    temp=str[0];//最小的数与第一个数交换
    str[0]=str[j];
    str[j]=temp;

    temp=str[n-1];//最大的数与最后一个数交换
    str[n-1]=str[i];
    str[i]=temp;

    return 0;
}

int output(char a[])
{
    int i;
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    return 0;
}

int main()

{
    char a[10]={};
    input(a);
    chuli(a);
    output(a);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Zizizi9898/article/details/88695318