从终端输入一个n 将数组int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9} 完成如下变化,并打印,
操作方式如下:
n:1
9 1 2 3 4 5 6 7 8
n:2
8 9 1 2 3 4 5 6 7
n:3 7 8 9 1 2 3 4 5 6
循环右移 8, 9,1, 2, 3, 4, 5, 6, 7
#include<stdio.h>
int main(void)
{
int a[9]={1,2,3,4,5,6,7,8,9};
int i,j,n,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
{
temp = a[8];
for(j=8;j>0;j--)
{
a[j]=a[j-1];
}
a[0]=temp;
}
printf("new array:\n");
for(i=0;i<9;i++)
{
printf("%-2d",a[i]);
}
return 0;
}
外层循环for(i=0;i<n;i++)
这个循环控制数组右移的次数,总共执行n次
每次循环内,数组右移一位
保存最后一个元素
temp = a[8];
这样右移时不会丢失最后一个元素
内层循环for(j=8;j>0;j--)
从数组最后一个位置开始,向前遍历到第二个位置
a[j]=a[j-1];将每个元素右移一位
a[0]=temp;
将保存的最后一个元素放到数组的第一个位置