100个经典C语言里面例题68
/****************题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
*****************/
#include<stdio.h>
#if(0)
int main()
{
int i,k,m;
int a={1,2,3,4,5,6};
printf ("后移:");
scanf ("%d",&m);
for (i=0;i<3;i++)
{
k=a;a=a;a=k;
}
for (i=0;i<6;i++)
{
printf("%d",a);
}
}
#endif
#if(1)
int main()
{
int number={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);
//scanf("%d",&number);
move(number,n,m);
for(i=0;i<n-1;i++)
printf("%d,",number);
printf("%d",number);
}
int move(array,n,m)
int n,m,array; //全局变量? 为什么只有在这里定义是可行的?
{
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, int n, int m)
等于
int move(array,n,m)
int n,m,array; //全局变量? 为什么只有在这里定义是可行的?
它分开来写了。 ba21 发表于 2018-10-17 10:06
这是一种特殊的写法,第一次见。
不是全局变量,实际上就是
int move(int array, int n, int m)
嗷嗷,我明白了,难怪我怎么改都不对,谢谢{:5_106:}
页:
[1]