问题:在moodle上显示调用了受限函数应该怎么修改
原题:若有n个数的数组arr,循环右移一位指每个数移到相邻的右边一个位置,最右边的数移到最左边。如数组1,2,3,4,5;循环右移1位的结果为5,1,2,3,4;右移3位的结果为3,4,5,1,2。
使用指针方法,编写数组右移k位的函数。
编写主函数输入若干元素和右移位数,调用函数右移,在主函数中输出结果。元素个数不超过100。
输入:两行,第1行为若干用空格分隔的整数,以9999表示结束;第2行一个整数,表示右移的位数。
输出:一行,移位的结果,各个数值用一个空格隔开,末尾无空格。
【输入输出样例】
输入:
1 2 3 4 5 9999
3
输出:
3 4 5 1 2
#include <stdio.h>
int main()
{
int a[20], n=0, m;
int i;
while ( a[i-1]!=9999 ){ scanf("%d", &a[i]);i++;} //i = 0; i < n; i++
n=i-1;
scanf("%d",&m);
ArrayShift(a, n, m);
for ( i = 0; i < n; i++ ) {
if (i != 0) printf(" ");
printf("%d", a[i]);
}
printf("\n");
return 0;
}
int ArrayShift( int a[], int n, int m )
{
int i;
int k;
for(k=1;k<=m;k++)
{
int temp=a[n-1];
for(i=n-1;i>0;i--)
{
a[i]=a[i-1];
}
a[0]=temp;
}
}