题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
你来找代码就说明你已经思考过,实在是写不出来,我也不说废话,直接代码解析:
第一步:首先声明加输入:
int arry[5],i,j=0,k=0; int max,min; printf("请输入十个数:\n"); for(i=0;i<5;i++) { scanf("%d",&arry[i]); }
第二步:由于我们要找最大和最小,首先赋初值:
//由于前面令j=0,并且我们不知道这数的大小,所以我们把数组第一个令为最大 max=arry[j]; //同样也把第一个令为最小 min=arry[k];
第三步:接下来就是找到最大值和最小值:
for(i=0;i<5;i++) { //单循环找到最大值的位置,并把值用max记录下来 if(arry[j]<arry[i]) { j=i; max=arry[i]; } //同样找到最小值的位置,并把值min记录下来 if(arry[k]>arry[i]) { k=i; min=arry[i]; } }
第四步:然后根据题意交换: 最大的与第一个元素交换,最小的与最后一个元素交换
//最大值与第一个交换 arry[j]=arry[0]; arry[0]=max; //最小值与最后一个交换 arry[k]=arry[4]; arry[4]=min;
第五步:最后输出:
for(i=0;i<5;i++) { printf("%d ",arry[i]); }
完整代码如下:
#include<stdio.h> int main() { int arry[5],i,j=0,k=0,t; int max,min; printf("请输入十个数:\n"); for(i=0;i<5;i++) { scanf("%d",&arry[i]); } max=arry[j]; min=arry[k]; for(i=0;i<5;i++) { if(arry[j]<arry[i]) { j=i; max=arry[i]; } if(arry[k]>arry[i]) { k=i; min=arry[i]; } } arry[j]=arry[0]; arry[0]=max; arry[k]=arry[4]; arry[4]=min; for(i=0;i<5;i++) { printf("%d ",arry[i]); } return 0; }