【题目】帮忙想想这道C语言题的算法题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。这个题本来用
268435356C. 536870912D. 513765802 4c语言 编程1.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。2.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。3、用一维数组解如下问题:读取20个在10到100之间的不重复...
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)...
include<stdio.h> 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...
又易知,最后剩下的人,在最后一轮的报数必然为1,那么可以利用同余式倒推其原始编号:(((1 + M)% 2 + M) % 3)+ M % 4。。。变成程序为:include <cstdio> using namespace std;const int M = 3;int main(){ int n, i, ind;printf("please input a number:");scanf("%d...
if(count==3){ if(count==3){out++; out++;p=0; *p=0; break;}结束if } }结束for count=0; //此处导致
然后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 ...
设有n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数 (用数学方法解的时候需要注意应当从0开始编号,因为取余会取到0解。)实质是一个递推,n个人中最终留下来的序号与n-1个人中留下来的人的序号有一个递推关系式。假设除去第k个人,则 0, 1, 2, 3,...
include<stdio.h> int main(int argc,char*argv[]){ int i,j=0,k=0,n;int a[30]={0};printf("请输入有几个人玩游戏:");scanf("%d",&n);for(i=0;i<n;i++){ a=1;//1代表活着,0代表出局 } for(i=1;i<4;i=i%3+1)//控制i的值在[0,3]{ if(3==i&&a[j]!=0...
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。`在这里插入代码片` 问最后留下的是原来的第几号的那位。 1. 2. 3. 输入 初始人数n 1. 输出 最后一人的初始编号 1. 样例输入 3 1. 样例输出 2 1. 来源/分类 C语言 1. 题目截图: ...