c语言报数出圈函数 围圈报数c语言指针

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://myzitong.com/article/hijhpo.html