2024-10-14 08:11:53
# include"stdio.h"
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},b[10];
int i,j,k;
printf("移位前: ");
for(k=0;k<10;k++)
printf("%d ",a[k]);
printf("\n");
printf("Input i: ");
scanf("%d",&i);
j=i%10;
for(k=0;k<10;k++)
{
if(j==10)
j=0;
b[k]=a[j++];
}
for(k=0;k<10;k++)
a[k]=b[k];
printf("移位后: ");
for(k=0;k<10;k++)
printf("%d ",a[k]);
printf("\n");
}
2024-10-14 08:37:26
思路:可以定义两个数组a和b,以及整数i,数组a用来存放原始数据,数组b用来存放移动过后的数据,依次把a的第i位到结束位置的数存放到b中,再把a的0位置到i位置数存放到b中,最终的b就是数组循环左移i位的最终结果。
//参考代码:
#include<math.h>
#include<stdio.h>
int main()
{
int a[6]={1,2,3,4,5,6},b[6],i,j;
i=2;
for(j=0;j<6;j++){
b[j]=a[(i+j)%6];
}
for(j=0;j<6;j++)
printf("%d ",a[j]);
printf("\n");
for(j=0;j<6;j++)
printf("%d ",b[j]);
return 0;
}
/*
输出:
1 2 3 4 5 6
3 4 5 6 1 2
*/
2024-10-14 08:04:37