作业帮 > 综合 > 作业

C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/28 03:40:39
C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子
有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子.如此循环,直到留下最后一个人.问留下来的人的编号.
【输入形式】
考虑如下两种情况:
如果n超出“n must be a natural number less than 10000”,则打印“n is out of range of valid values.”;其中n应该用如上输入的具体的n数值代替;换行;
如果n是有效范围的数值,则打印“Last No.is:”;然后直接在冒号后面输出最后留下来的人的编号;换行;
【运行时的输入输出样例1】(下划线部分表示输入)
Input n(n must be a natural number less than 10000):5
Last No.is:4
【运行时的输入输出样例2】(下划线部分表示输入)
Input n(n must be a natural number less than 10000):100000
100000 is out of range of valid values.
我的程序为什么死循环啊.刚学指针,求改正,
#include
#define N 9999
int main()
{
\x05int n,a[N],*p,i=0,out=0,count=0;
\x05printf("Input n(n must be a natural number less than 10000):");
\x05scanf("%d",&n);
\x05if(n>=10000)
\x05\x05printf("n is out of range of valid values.");
\x05else
\x05{
\x05\x05for(i=0;i
C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子
#include
#define N 9999
int main()
{
int n,a[N],*p,i=0,out=0,count=0;
printf("Input n(n must be a natural number less than 10000):");
scanf("%d",&n);
if(n>=10000)
printf("n is out of range of valid values.");改为printf("%d is out of range of valid values.",n);
else
{
for(i=0;i
再问: 我重新根据你的改了下,还是死循环,逐步调试后,if(*p!=0)这个,全部被跳过了... 可是明明p是指向a[]的啊...然后就死循环了.. 还有那个for(;;)是什么意思,没有判断等语句,不是等于没有用么?.
再答: 确实不行,因为*p==0的情况没有处理,这样遇到一个*p==0就一直死循环了 至于那个for循环的判断语句在循环里面,就是那个break;也可以用while(1)来代替 把p=a;改为p=&a[1];后面循环写成下面这样看看 while(out!=n-1) { while(1) { if(*p!=0) count++; if(p==&a[n]) p=&a[1]; else p++; if(count==3) { if(p==&a[1]) a[n]=0; else p--; out++; //在这儿家加上printf("%d->",*p);就可以把顺序打出来了 *p=0; break; } }结束while(1) count=0; }结束while(out!=n-1) for(i=1;i
C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数, 用C语言编写:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,请输出报数出列圈及最 2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, c语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1~3报数),报到3的人退出圈子,求退出顺序 C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 问最后留下 C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 有N个人围成一个圈顺序编号,从第一个人开始报数(从1到M),凡报到M的人退出圈子, 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出(pascal c语言:有n个人围成一圈,按顺序编号.从第1个人开始报数,数到m时该人退出,并且下一个从1重新开始报数.