输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
要求:写三个函数:1)输入10个数;2)进行处理;3)输出10个数。
这个题目主要的点是要小心,如果先交换最小的数,那要注意第一个数是不是最大的数
#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;
}