Description
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;
①输入10个数;②进行处理;③输出10个数。
Input
10个整数
Output
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
Sample Input
2 1 3 4 5 6 7 8 10 9
Sample Output
1 2 3 4 5 6 7 8 9 10
#include<stdio.h>
void sr(int a[])
{
int i;
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
}
void cl(int a[])
{
int i,u,t,z,f;
int zx=a[0],zd=a[9];
int m=9,n=0;
for(i=0;i<10;i++){
if(a[i]>=zd){
zd=a[i];
m=i;
}
}
for(i=0;i<10;i++){
if(a[i]<=zx){
zx=a[i];
n=i;
}
}
//注意以下段落,易错点在于进行了最小值的更换之后,a[i]原来所存储的数字已经被替代,而在第二组//交换的时候,由于有变量记录m的a[m]已经改变,所以会导致错误的输出。(当第一个为最大或者最后一个为//最小的时候会出现此情况wa)
t=a[n];
z=a[0];//当第一个数为最大值的时候,需要注意存储原来的数值,否则将会被第一个替换的a[n]所取代 //a[0]的位置
a[n]=a[0];
a[0]=t;
//注意点
if(m==0){
f=a[9];
u=z;
a[9]=z;
a[n]=f;
}
else{
u=a[9];
a[9]=a[m];
a[m]=u;
}
}
void sc(int a[])
{
int i;
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
}
int main()
{
int a[10];
sr(a);
cl(a);
sc(a);
return 0;
}