100
- 任务要求
- 评论
任务描述:
编程读入10个整数存入数组中,数组前半段和后半段位置互换再输出。
输入样例:
36 43 41 62 20 29 72 17 0 41
输出样例:
29,72,17,0,41,36,43,41,62,20
开始你的任务吧,祝你成功!
思路:因为这个数组数是确定的,并且该数是偶数,所以可以用10/2划定界限,然后利用这个进行数组交换。以下是我的代码。
#include <stdio.h>
int main(){
int a[10],m=10/2,temp;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++){ //数组交换
temp=a[i];
a[i]=a[i+m];
a[i+m]=temp;
}
for(int i=0;i<10;i++){ //处理输出
if(i%10>0)
printf(",");
printf("%d",a[i]);
}
return 0;
}
那如果推广到任意数字呢,重点在于奇数,偶数很显然可以用数组数/2来确定数组前半范围,那奇数是怎么处理的呢,以下是我的代码,如有不足,请大家指正。
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n],m,temp;
if(n%2==0)
m=n/2; //数组数是偶数处理
else
m=n/2+1; //数组数是奇数处理
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++){
if(i==m-1&&n%2!=0) //因为是奇数,所以要跳过中间那一项
continue;
temp=a[i];
a[i]=a[i+m];
a[i+m]=temp;
}
for(int i=0;i<n;i++){ //处理输出
if(i%n>0)
printf(",");
printf("%d",a[i]);}
return 0;
}