C语言编程题,13个人围成圈编号1~13数到3的出列,然后从第四个开始为1继续数到3的出列,最后剩下的是几号
答案:5 悬赏:80 手机版
解决时间 2021-03-28 00:03
- 提问者网友:风月客
- 2021-03-27 17:56
C语言编程题,13个人围成圈编号1~13数到3的出列,然后从第四个开始为1继续数到3的出列,最后剩下的是几号
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-03-27 18:51
C语言编程题,13个人围成圈编号1~13数到3的出列,然后从第四个开始为1继续数到3的出列,最后剩下的是几号
#include
main()
{
int n,s,m,t,i,num[105],j;
// scanf("%d",&t);
//while(t--)
{
for(i=0;i<105;i++)
{
num[i]=i;
}
//scanf("%d%d%d",&n,&s,&m);
n=13;
s=1;
m=3;
for(i=s;n>=1;)
{
i=i+m-1;
if(i>n)
i=i%n;
if(i==0)
{
printf("%d ",num[n]);
i=n;
}
else
printf("%d ",num[i]);
for(j=i;j {
num[j]=num[j+1];
}
n-- ;
}
printf("\n%d win.\n",num[1]);
}
}追问能不能注释下,好深奥啊~~追答就是每次拿掉一个人啊.不解释了.自己看看吧
#include
main()
{
int n,s,m,t,i,num[105],j;
// scanf("%d",&t);
//while(t--)
{
for(i=0;i<105;i++)
{
num[i]=i;
}
//scanf("%d%d%d",&n,&s,&m);
n=13;
s=1;
m=3;
for(i=s;n>=1;)
{
i=i+m-1;
if(i>n)
i=i%n;
if(i==0)
{
printf("%d ",num[n]);
i=n;
}
else
printf("%d ",num[i]);
for(j=i;j
num[j]=num[j+1];
}
n-- ;
}
printf("\n%d win.\n",num[1]);
}
}追问能不能注释下,好深奥啊~~追答就是每次拿掉一个人啊.不解释了.自己看看吧
全部回答
- 1楼网友:末日狂欢
- 2021-03-27 20:50
我的结果是13号。
int main (void)
{
int nNum[13] = {0};
int i = 0, k = 0, m = 0;
for(i = 0; i < 13; i++) //给每个人上编号
{
nNum[i] = i + 1;
}
for(i = 1; i < 4; i++)
{
while(nNum[k] == 0)//标记不为0的才数数
{
k++;
if(k == 13)
{
k = 0;
}
}
if(i == 3)//数到3的出列
{
nNum[k] = 0; //出列的标记为0.
i = 0;
m++;
}
k++;
if(k == 13)//13个人数完了,就再从第1个开始数
{
k = 0;
}
if(m == 12)//有12个人出列了就停止
{
break;
}
}
for(i = 0; i < 13; i++)
{
if(nNum[i] != 0)//输出没有出列的人
{
printf("%d", nNum[i]);
}
}
return 0;
}
int main (void)
{
int nNum[13] = {0};
int i = 0, k = 0, m = 0;
for(i = 0; i < 13; i++) //给每个人上编号
{
nNum[i] = i + 1;
}
for(i = 1; i < 4; i++)
{
while(nNum[k] == 0)//标记不为0的才数数
{
k++;
if(k == 13)
{
k = 0;
}
}
if(i == 3)//数到3的出列
{
nNum[k] = 0; //出列的标记为0.
i = 0;
m++;
}
k++;
if(k == 13)//13个人数完了,就再从第1个开始数
{
k = 0;
}
if(m == 12)//有12个人出列了就停止
{
break;
}
}
for(i = 0; i < 13; i++)
{
if(nNum[i] != 0)//输出没有出列的人
{
printf("%d", nNum[i]);
}
}
return 0;
}
- 2楼网友:不如潦草
- 2021-03-27 20:05
结果是13号!
代码:
#include
#define N 13
int main()
{
int flag[N+1] = {0}; //标志已出列的人,第0位不用
int i,j,out = 0;
i=1; //i为人的标号,初始值为1
j=0; //j为数的数字,当j=3时,对应的人出列
while(out < N) //out为已出列的人数,当out=N-1时,循环退出
{
if(flag[i] == 0) j++;
if(j == 3)
{
flag[i] = 1; //标志此人出列
j = 0; //重新开始数数字
out ++; //出列人数加1
}
i ++;
if(i == N) i = 0; //重新从1号人开始数
}
i = 1;
while(flag[i] == 1) i++;
printf("最后剩下的小孩为%d号!\n",i);
return 0;
}
代码:
#include
#define N 13
int main()
{
int flag[N+1] = {0}; //标志已出列的人,第0位不用
int i,j,out = 0;
i=1; //i为人的标号,初始值为1
j=0; //j为数的数字,当j=3时,对应的人出列
while(out < N) //out为已出列的人数,当out=N-1时,循环退出
{
if(flag[i] == 0) j++;
if(j == 3)
{
flag[i] = 1; //标志此人出列
j = 0; //重新开始数数字
out ++; //出列人数加1
}
i ++;
if(i == N) i = 0; //重新从1号人开始数
}
i = 1;
while(flag[i] == 1) i++;
printf("最后剩下的小孩为%d号!\n",i);
return 0;
}
- 3楼网友:北城痞子
- 2021-03-27 19:57
#include
#include
int main()
{
int i,j,count,num;
int s=0,m=0;
char c='A';
printf("Please input a count and a number: ");
scanf("%d%d",&count,&num);
char a[count];
int b[count];
for(i=0;i {
a[i]=c;
b[i]=0;
printf("%2c %2d",a[i],b[i]);
}
printf("\n");
for(i=0;s!=count;i++)
{
if(i==count)
i=0;
if(b[i]==0)
m++;
if(m==num)
{
printf("%2c",a[i]);
m=0;
b[i]=1;
s+=b[i];
}
}
return EXIT_SUCCESS;
}
#include
int main()
{
int i,j,count,num;
int s=0,m=0;
char c='A';
printf("Please input a count and a number: ");
scanf("%d%d",&count,&num);
char a[count];
int b[count];
for(i=0;i
a[i]=c;
b[i]=0;
printf("%2c %2d",a[i],b[i]);
}
printf("\n");
for(i=0;s!=count;i++)
{
if(i==count)
i=0;
if(b[i]==0)
m++;
if(m==num)
{
printf("%2c",a[i]);
m=0;
b[i]=1;
s+=b[i];
}
}
return EXIT_SUCCESS;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯