围圈报数c语言
@栾亨3396:C语言有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数)凡报到3的人退出圈子麻烦注释下代码 -
赵莺17285443630…… 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) //报...
@栾亨3396:C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 -
赵莺17285443630…… #include <stdio.h> void main() { int i = 0; int n = 0; int out = 0; //退出的人数 int num = 0; //报数 int a[1024] = {0}; //0表示退出圈子 printf("Input n:"); scanf("%d", &n); for (i = 0; i < n; i++) { a[i] = 1; } i = 0; while (out != n-1) { if (a[i] == 1) { num++; } ...
@栾亨3396:c语言题目:有13个人围成一圈,顺序排号,报数,凡报到3的就退出,问最后留下来的是原来第几号的那位 -
赵莺17285443630…… #include int main () { int a[13]={0},*p=&a[12],i=1,*p1; while (1) { do { p++; p= a+(p-a)%13;//指针p超出数组范围时自动回0 } while ((*p)==1);//如果成员是被踢出的则继续顺延 if (p1==p) break;else p1=p;//当只剩一个成员时候跳出 if (i++%3==0) *p=1;//指针指到的成员出局 } printf ("最后剩下第%d个人",p1-a+1); return 0; }
@栾亨3396:C语言:用指针:n个人围成一圈,依次从1到n编号.从编号为1的人开始报数,凡报数为3的人退出圈子, -
赵莺17285443630…… #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;...
@栾亨3396:用C编程围圈报数的题
赵莺17285443630…… void left(int *p,int n){ int i,out,count; i=out=count=0; while (out<n-1) { if(*(p+i)!=0) ++count; if(count==3) { *(p+i)=0; count=0; out++; } i++; if(i==n) i=0; }}#include <stdio.h>void main(){ int *num,n,i; printf("How many people?\n"); scanf("%d",&...
@栾亨3396:C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, -
赵莺17285443630…… 法一(模拟法):#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]=...
@栾亨3396:C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 -
赵莺17285443630…… 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); ...
@栾亨3396:C语言有N个人围成一圈,按顺序从1到N编号从第一个人开始报数,
赵莺17285443630…… 我自己实在是无这方面的思路,从网上找了一个不完全版的,希望对你有帮助. #define nmax 50 main() {int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:...
@栾亨3396:M个人围成一圈报数,报到N的人出列,输出出列顺序!用C语言实现!
赵莺17285443630…… //M个人围成一圈报数,报到N的人出列,输出出列顺序 #include<stdio.h> #define MaxNumOfPerson 100 void main() { int Array[MaxNumOfPerson]; int M,N; printf("请输入报数人数(M):\n"); scanf("%d",&M); printf("请输入报点(N):...
@栾亨3396:c语言题目;有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 .... -
赵莺17285443630…… 这个问题叫约瑟夫环问题. 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
赵莺17285443630…… 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) //报...
@栾亨3396:C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 -
赵莺17285443630…… #include <stdio.h> void main() { int i = 0; int n = 0; int out = 0; //退出的人数 int num = 0; //报数 int a[1024] = {0}; //0表示退出圈子 printf("Input n:"); scanf("%d", &n); for (i = 0; i < n; i++) { a[i] = 1; } i = 0; while (out != n-1) { if (a[i] == 1) { num++; } ...
@栾亨3396:c语言题目:有13个人围成一圈,顺序排号,报数,凡报到3的就退出,问最后留下来的是原来第几号的那位 -
赵莺17285443630…… #include int main () { int a[13]={0},*p=&a[12],i=1,*p1; while (1) { do { p++; p= a+(p-a)%13;//指针p超出数组范围时自动回0 } while ((*p)==1);//如果成员是被踢出的则继续顺延 if (p1==p) break;else p1=p;//当只剩一个成员时候跳出 if (i++%3==0) *p=1;//指针指到的成员出局 } printf ("最后剩下第%d个人",p1-a+1); return 0; }
@栾亨3396:C语言:用指针:n个人围成一圈,依次从1到n编号.从编号为1的人开始报数,凡报数为3的人退出圈子, -
赵莺17285443630…… #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;...
@栾亨3396:用C编程围圈报数的题
赵莺17285443630…… void left(int *p,int n){ int i,out,count; i=out=count=0; while (out<n-1) { if(*(p+i)!=0) ++count; if(count==3) { *(p+i)=0; count=0; out++; } i++; if(i==n) i=0; }}#include <stdio.h>void main(){ int *num,n,i; printf("How many people?\n"); scanf("%d",&...
@栾亨3396:C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, -
赵莺17285443630…… 法一(模拟法):#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]=...
@栾亨3396:C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 -
赵莺17285443630…… 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); ...
@栾亨3396:C语言有N个人围成一圈,按顺序从1到N编号从第一个人开始报数,
赵莺17285443630…… 我自己实在是无这方面的思路,从网上找了一个不完全版的,希望对你有帮助. #define nmax 50 main() {int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:...
@栾亨3396:M个人围成一圈报数,报到N的人出列,输出出列顺序!用C语言实现!
赵莺17285443630…… //M个人围成一圈报数,报到N的人出列,输出出列顺序 #include<stdio.h> #define MaxNumOfPerson 100 void main() { int Array[MaxNumOfPerson]; int M,N; printf("请输入报数人数(M):\n"); scanf("%d",&M); printf("请输入报点(N):...
@栾亨3396:c语言题目;有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 .... -
赵莺17285443630…… 这个问题叫约瑟夫环问题. 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