n个人围成一圈报数c语言

作者&投稿:武琼 (若有异议请与网页底部的电邮联系)

c语言 报数问题
输入两个正整数 n 和 m( (1<m<n<=50)),有 n 个人围成一圈,按顺序从 1 到 n 编号。从第一个人开始报数,报数 m 的人退出圈子,下一个人从 1 开始重新报数,报数 m 的人退出圈子。如此循环,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号,以及最... 展开 帮我看看下面这个程序要怎么改。

C语言有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数...
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++;}\/\/为...

c语言有n个人围成一圈,顺序排号。从第一个人开始报数
k, k+1, ..., n-1, 0, 1, ..., k-2\/\/ 以序号k为起始,从k开始报0 (3)0, 1, ..., n-k-1, n-k, n-k+1, ..., n-2  \/\/ 作编号转换,此时队列为n-1人  (4)变换后就完完全全成为了(n-1)个人报数的子问题,注意(1)式和(4)式,是同一个问题...

C语言:有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数。
if(a[i]==1)printf("最后剩下的是第%d个人",i+1);break;return 0;}

用c语言实现
功能:n个人围成一个圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子。找出最后留在圈子里的人原来的序号。输入:int n:初始人数 返回:int:最后留在圈子里的人原来的序号 \/ int SearchLastPersonInCircle(int n){ \/*在这里实现功能*\/ typedef struct _num { int number;struct _...

c语言:有n个人围成一圈,按顺序编号。从第1个人开始报数,数到m时该人...
int main(){ int m,n;int bh;scanf("%d,%d",&n,&m);bh=(n%m);if(bh==0)bh=m;printf("%d",bh);}

C语言新手求助!!!急!!!
分类: 电脑\/网络 >> 程序设计 >> 其他编程语言 问题描述:10个人围成一圈,编号依次从1到10.从编号为1的人开始从1到3报数,凡报数是3的人退出圈子.编写程序输出依次出列的人的编号.(用选择,循环语句以及数组知识编写)解析:新手当然要照顾了 所以一个代码一个代码的给你加注释。。看明白了...

c语言10个人组成一个圈,身后的号码从1到10,从第一个人起123这样报数...
c语言10个人组成一个圈,身后的号码从1到10,从第一个人起123这样报数报到3的人出圈,求顺序值c语言10个人组成一个圈,身后的号码从1到10,从第一个人起123这样报数报到3的人出圈,求顺序值,。。。c语言10个人组成一个圈,身后的号码从1到10,从第一个人起123这样报数报到3的人出圈,求顺序值,...

C语言:n人围圈m报数的约瑟夫老题,要求见图片,咋编?
if(scanf("%d%d",&n,&m)==2 && m>0 && n>0){\/\/输入总人数和报数间隔 if((p=head=(struct s *)malloc(sizeof(struct s)))==NULL){\/\/申请空间 printf("Application memory failure, exit...\\n");\/\/申请失败则退出 return 0;} for(p->next=head,p->x=i=1;i<n;i++){\/\/...

C语言:有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3...
less than 10000 \\n"; printf("%d is out of range of valid values.",n); printf("Please Enter again :\\n"); scanf("%d", &n); } for (int i=2;i<=n;++i) s=(s+M)%i; printf("Last No. is %d\\n",s+1); return 0;} ...

唱孔17266647405问: C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 -
西安区丹莪回答: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18#include <stdio.h> constintM = 3; intmain() {intn, s = 0;scanf("%d", &n);if(n>10000){printf("n must be a natural number less than 10000 \n";printf("%d is out of range of valid values.",n);...

唱孔17266647405问: C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子,最 -
西安区丹莪回答: 第一轮:3的倍数(共33个)去掉,还剩67个 第二轮:3的倍数加1(共33个)去掉,还剩34个 第三轮:3的倍数加2(共32个)去掉,还剩2个 不好意思,最后必定剩下2个,且最后留下来的是1号和2号(从3开始一直到100不是满足3的倍数就是满足3的倍数加1就是满足3的倍数加2,所以全部被去除)

唱孔17266647405问: C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, -
西安区丹莪回答: 法一(模拟法): #include<iostream> using std::cin; using std::cout; int main() {int n;cout<<"请输入n= ";cin>>n;if(n<2){cout<<"n必须大于2!\n请重新输入n= ";cin>>n;}bool * a = new bool [n+1];a[0]=false;for(int i=1;i<n+1;i++)a[i]=...

唱孔17266647405问: C语言有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数)凡报到3的人退出圈子麻烦注释下代码 -
西安区丹莪回答: void main() {int a[100],i,quit_num,k,n; printf("input number:"); scanf("%d",&n); //读入总人数 for(i=0;ia[i]=i+1; quit_num=0;/*出圈人数*/ i=0; //报数起点 k=0; //报数时所报的数字 while(quit_num{if(a[i]!=0)k++; //若未出圈则报数 if(k==3) //报...

唱孔17266647405问: C语言有N个人围成一圈,按顺序从1到N编号从第一个人开始报数,
西安区丹莪回答: 我自己实在是无这方面的思路,从网上找了一个不完全版的,希望对你有帮助. #define nmax 50 main() {int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:...

唱孔17266647405问: c语言题目;有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 .... -
西安区丹莪回答: 这个问题叫约瑟夫环问题. n个人围成一圈,按顺序编号,分别为1、2、3..n.(你可以理解成每个人的座号). 然后1号开始,每人依次报号.即 (这里假设n=5) (前面是座号、后面是他报的号) 1:1 2:2 3:3(退出) 现在只剩下座号为1、2、4、5的人,从3的下一个开始报号 4:1 5:2 1:3(退出) 2:1 4:2 5:3(退出) 2:1 4:2 2:3(退出) 最后剩下4,就是当n=5时,你要得到的值是4

唱孔17266647405问: c语言,有n个人围成一圈,按顺序从1到n编好号.从第一个人开始报数,报到m(m<n)的人退出圈子 -
西安区丹莪回答: #include<stdio.h> int main() {int m,n,a[100],out=0,i,j=0; scanf("%d%d",&n,&m); /*输入m,n*/ for(i=0;i<n;i++) a[i]=i+1; while(out<n) {for(i=0;i<n;i++) {if(a[i]!=0) j++; if(j==m) {printf("%d\n",a[i]);out++;j=0;a[i]=0;} /*依次打印退出人的编号*/ if(i==n-1) break; } } i=0; if(a[i]!=0) {printf("%d",a[i]);i++;} /*最后打印剩下一人的编号*/ } 请采纳

唱孔17266647405问: C语言编一个程序:有N个人排成一圈 -
西安区丹莪回答: #include#define M 10 /*M是总人数*/#define N 3 /*循环为3*/ void main(void) { int a[M], b[M]; /*数组a存放圈中人的编号,数组b存放出圈人的编号*/ int i, j, k; for(i = 0; ia[i] = i + 1; for(i = M, j = 0; i > 1; i--){/*i表示圈中人个数,初始为M个,剩1个人时...

唱孔17266647405问: C语言:用指针:n个人围成一圈,依次从1到n编号.从编号为1的人开始报数,凡报数为3的人退出圈子, -
西安区丹莪回答: #include int last(int n){ int i,a[1000]; int total=0,sum=0; for(i=0;ia[i]=1; i=0; while(1){ sum+=a[i]; if (sum==3){ a[i]=0; total++; sum=0; if (total==n) return i+1; } i++; i=i%n; } } int main(){ int n,i; int *p; scanf("%d",&n); p=(int *)malloc(sizeof(int)*n); for(i=0;...

唱孔17266647405问: C语言,有n个小朋友围成一圈(n<50),顺序编号(编号从1~n).从第1号小朋友开始1、2、3报数,凡报到3的小朋友退出圈 -
西安区丹莪回答: int M=3; /全局变量 int i=2,n,s=0;/定义两个私有变量 scanf("%d",&n); /功能:输入多少小朋友 for(i=2;i<=n;++i) /循环从第二个小朋友到最后一个小朋友 s=(s+M)%i;/判断是否报到三,如果报到就排除,那个是取余符号 最后一个就是结果了,


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网