- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145

|

楼主 |
发表于 2007-4-21 21:13:46
|
显示全部楼层
同一的程序换一种写法:- #include<stdio.h>
- main()
- {
- void left(int *p,int n);
- int num[100],n,i;
- printf("how many people?\\n");
- scanf("%d",&n);
- for(i=0;i<n;i++)
- num[i]=i+1;
- left(num,n);
- for(i=0;i<n;i++)
- if(num[i]!=0)
- printf("no.which left last is %d",num[i]);
- }
- void left(int *p,int n)
- {
- int i,out,count;
- i=0;
- out=0;
- count=0;
- while(out<n-1)
- {
- if(*(p+i)!=0)
- count++;
- if(count==5)
- {
- *(p+i)=0;
- count=0;
- out++;
- }
- i++;
- if(i==n) i=0;
- }
- }
复制代码
为什么最后要加上if(i==n) i=0; 呢?不加就无法正确运行。为什么会这样?而且不加的时候还会使主函数最后一个for中的printf语句打印数次,但通过函数中的操作,不是已经将最后一个以外的都置零了吗? |
|