马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/****************
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
*****************/
#include<stdio.h>
#if(0)
int main()
{
int i,k,m;
int a[6]={1,2,3,4,5,6};
printf ("后移:");
scanf ("%d",&m);
for (i=0;i<3;i++)
{
k=a[i];a[i]=a[i+m];a[i+m]=k;
}
for (i=0;i<6;i++)
{
printf("%d",a[i]);
}
}
#endif
#if(1)
int main()
{
int number[6]={1,2,3,4,5,6},n,m,i;
printf("the total numbers is:");
scanf("%d",&n);
printf("back m:");
scanf("%d",&m);
//for(i=0;i<n-1;i++)
//scanf("%d,",&number[i]);
//scanf("%d",&number[n-1]);
move(number,n,m);
for(i=0;i<n-1;i++)
printf("%d,",number[i]);
printf("%d",number[n-1]);
}
int move(array,n,m)
int n,m,array[6]; // 全局变量? 为什么只有在这里定义是可行的?
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0) move(array,n,m);
}
#endif
注释部分不明白,我的理解是全局变量,但是尝试放到别的位置,都不可行,
有没有知道的,帮忙解释一下,感谢!
这是一种特殊的写法,第一次见。
不是全局变量,实际上就是
int move(int array[6], int n, int m)
等于
int move(array,n,m)
int n,m,array[6]; // 全局变量? 为什么只有在这里定义是可行的?
它分开来写了。
|