题目内容:
有数组其10个元素值依次是:{1 2 3 4 5 6 7 8 9 10},现在将前面各数顺序向后移动m个位置,最后m个数变成最前面m个数,并输出。(编程提示:定义函数,实现每次数组往后移动一个元素,最后一个放到数组前面,这样调用m次即可实现数组后移m个数)
输入格式:
输入移动的次数m,scanf的格式串为"%d"
假设输入的m的值在闭区间[1,10]之间,程序中不再用选择或循环结构来处理输入部分。
输出格式:
依次输出移动后所有的元素
循环控制输出每个元素,printf中的格式串为"%3d"
输出最后一个元素后用printf("\n");进行换行处理。
输入样例:
3
输出样例:
8 9 10 1 2 3 4 5 6 7
参考
#include<stdio.h>
void move(int [10],int ,int);
int main()
{
int m,n=0,i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
scanf("%d",&m);
move (a,10,m);
for(i=0;i<10;i++)
{
printf("%3d",a[i]);
if(i%9==0&&i!=0)
{
printf("\n");
}
}
return 0;
}
void move(int arry[10],int n,int m)
{
int *p,end;
end=*(arry+n-1);
for(p=arry+n-1;p>arry;p--)
*p=*(p-1);
*arry=end;
m--;
if(m>0)
move(arry,n,m);
}