C语言 3个人围成一圈报数问题,报道3的人出圈,劳烦各位解释一下,下面的程呗
就是将每一个人的信息保存在二维数组的一个维中。每个人的信息包含2部分,一部分是他的编号(即最开始他站的位置,作为二维数组的第一维),另一部分就是他是否还在圈中的标记(1表示在,0表示不在)。
为昌图等地区用户提供了全套网页设计制作服务,及昌图网站建设行业解决方案。主营业务为网站建设、成都网站设计、昌图网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
index变量就是用来遍历每一个人的。array[index]就是编号为index的一个人。array[index][1]就是编号为index的人的状态(是否还在圈中)。count用于记录圈中的当前人数。
当圈中还有1个人以上时,就用if(array[index][1]==1)找到一个还在圈中的人,得到他的index,他报数,temp就加1,当temp为3时,表示这个人报的是3,将他出圈(array[index][1]=0
),将圈中人数减1(count--),并将temp置0,剩下的人重新从1开始报数。index=(index+1+n)%n语句找到下一个人,然后接着循环判断这个人是不是在圈中。。。如此反复。
但是你这个程序似乎没有对出圈顺序进行输出。
C语言约瑟夫出圈问题
#includestdio.h //定义头文件
void main() //主函数
{
int a[51],i,j,x,n; // 定义变量和数组
scanf("%d %d",n,j); // 从输入终端输入变量
for ( i=0;i=n-2;i++) a[i]=i+1;a[n-1]=0;x=n-1; //用for语句实现第一个循环,表示出圈的人数
while( a[x]!=x ) //while语句判断数组内标记的人是否出圈
{ for( i=1;i=j-1;i++)
x=a[x]; 标记出圈的人
a[x] = a[a[x]];
}
printf( "The left child is NO %d.",x+1 ); 输出
}
这个程序虽然简单,但新手最好别这么写!
如果需要,我可以给你写一个能看懂的!
欢迎追问,望采纳!
C语言有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数)凡报到3的人退出圈子麻烦注释下代码
#includelt;stdio.hgt;
#define N 5//人数
void main()
{
int a[N]={0},i=0,out_n=0,call_n=0,*p;
p=a;
while(1){//循环报数
if(*p==0){//如果健在
if(out_n==(N-1))break;//如果仅剩一人
call_n++;//报数
call_n%=3;//最大为3,到了3就从0开始
if(call_n==0){*p=1;out_n++;}//为0(即3)出局
}
p++;if(p==a+N)p=a;//循环转向下一人
}
printf("最后剩余者的编号是:%d\n",p+1-a);
}
扩展资料:
printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。
函数的原型为:int printf(const char*format,...);函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
printf()函数的调用格式为:
printf("lt;格式化字符串gt;",lt;参量表gt;);
其中格式化字符串包括两部分内容:一部分是正常字符;这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
规定符
%d十进制有符号整数
%u十进制无符号整数
%f浮点数
%s字符串
%c单个字符
%p指针的值
%e指数形式的浮点数
%x,%X无符号以十六进制表示的整数
%o无符号以八进制表示的整数
%g把输出的值按照%e或者%f类型中输出长度较小的方式输出
%p输出地址符
%lu 32位无符号整数
%llu 64位无符号整数
c语言中的出圈问题:怎么设计程序,请解释下,谢谢
这个程序好乱啊,没有这么复杂吧。
void Josegh(void)
{int i,j,k,s1,w;
s1=s;
for(i=1;i=n;i++) p[i-1]=i; //这里是给p[100]赋初值,也就是实现题目中编号的要求
for(i=n;i=2;i--) //用i来控制没出圈的总人数
{s1=(s1+m-1)%i; //这条语句的作用是找出报数后出圈人的下标,其中对i求余的作用是使报数按圈进行(即报到尾后又从头报)
if (s1==0) s1=i;
w=p[s1-1];
for(j=s1;j=i-1;j++) p[j-1]=p[j];//将出圈以后的人依次往前移
p[i-1]=w;}
}
网站栏目:c语言报数出圈函数 围圈报数c语言指针
转载注明:http://lswzjz.com/article/hijhpo.html