入门篇——入门模拟
【1.1】实现数组元素循环右移
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4(无空格)
参考代码:
#include <stdio.h>
int main()
{
int num = 0;
int move = 0;
scanf("%d %d",&num,&move);
move = move % num;
int arr[num] = {0};
int arr_tmp[num] = {0};
for(int i = 0;i < num;i++)//输入
{
scanf("%d",&arr[i]);
}
for(int k = 0;k<num;k++)//将数组要移动的元素保存下来
{
arr_tmp[move -1 -k] = arr[num - k -1];
}
for(int j = 0;j<num - move;j++)
{
arr[num - 1 - j] = arr[num - j - move -1];
for(int j = 0;j<num ;j++)
{
if(j<move)
{
printf("%d ",arr_tmp[j]);
}
if(j !=num -1 && j>=move)
{
printf("%d ",arr[j]);
}
if(j==num -1)
{
printf("%d",arr[j]);
}
}
return 0;
}
参考后
#include <stdio.h>
int main()
{
int num = 0,
move = 0,
count = 0;
int arr[num]={0};
scanf("%d %d",&num,&move);
move = move % num;//移动num个位数,相当于没有移动
for(int j = 0;j < num;j++)
{
scanf("%d",&arr[j]);
}
for(int i = num - move ;i<num;i++)
{
printf("%d",arr[i]);
count++;
if(count < num)
printf(" ");
}
for(int i =0;i<num - move;i++)
{
printf("%d",arr[i]);
count++;
if(count < num)
printf(" ");
}
return 0;
}