C语言程序设计基础。。

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
要求:写三个函数:1)输入10个数;2)进行处理;3)输出10个数。

img

这个题目主要的点是要小心,如果先交换最小的数,那要注意第一个数是不是最大的数

#include <stdio.h>
 
void input(int *a,int n)
{
    for(int i=0;i<n;i++)
        scanf("%d",a+i);
}

void output(int *a,int n)
{
    for(int i=0;i<n;i++)
        printf("%d ",*(a+i));
}
 
void exchange(int *a,int n)
{
    int max,min,t,i;
    for(i=0;i<n;i++)
    {
        if(i==0 || a[max] < a[i])
            max = i;
        if(i==0 || a[min] > a[i])
            min = i;
    }
    if(max == 0)
        max = min;
    t = a[0];
    a[0] = a[min];
    a[min] = t;
    t = a[n-1];
    a[n-1] = a[max];
    a[max] = t;
}

int main()
{
    int a[10];
    input(a,10);
    exchange(a,10);
    output(a,10);
    return 0;
}

供参考:

#include <stdio.h>
#define N 10
void input(int *a, int n)
{
    int i;
    for (i = 0;i < n; i++)
        scanf("%d", &a[i]);
}
void handle(int *a, int n)
{
    int i,tmp,max_i=0,min_i=0;
    for (i = 0; i < n; i++)
    {
        if (a[i] < a[min_i])
            min_i = i;
        if (a[i] > a[max_i])
            max_i = i;
    }
    tmp = a[0]; a[0] = a[min_i]; a[min_i] = tmp;
    if (max_i == 0) max_i = min_i;
    tmp = a[n - 1]; a[n - 1] = a[max_i]; a[max_i] = tmp;
}
void print(int *a, int n)
{
    int i;
    for (i = 0; i < n; i++)
         printf(i == 0 ? "%d" : " %d", a[i]);
    printf("\n");
}
int main()
{
    int n = 10, a[N];
    input(a , n);
    handle(a, n);
    print(a, n);
    return 0;
}