有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3),凡报到3的人退出圈子,问最后留下的原来排在第几号。
#include<iostream>
using namespace std;
int main()
{
int n, i, *p;
cout << "请输入总人数";
cin >> n;
int a[50];
p = a;
for (i = 0; i <= n; i++)
{
a[i] = i;
}
int o = 0, l = 0;
while (o < n - 1)
{
int j;
for (j = 1; j <=n; j++)
{
if (*(p + j) != 0)
{
l++;
}
if (l == 3)
{
*(p + j) = 0;
l = 0;
o++;
}
}
while (*p == 0)
{
p++;
}
}
cout << *p << " 号!" << endl;
return 0;
}
不管我输入的几个人最后输出的都是1号。要疯了。。。。
关于报数游戏的编程,求C++大神帮忙找错。不胜感激。
答案:2 悬赏:0 手机版
解决时间 2021-03-15 09:11
- 提问者网友:相思似海深
- 2021-03-15 03:31
最佳答案
- 五星知识达人网友:长青诗
- 2021-03-15 04:33
while(recv(serv,message,11,0)!=11);一行最后面的分号去掉
全部回答
- 1楼网友:天凉才是好个秋
- 2021-03-15 05:34
#include<iostream>
using namespace std;
int main()
{
int n, i, o, c = 0;
cout << "请输入总人数";
cin >> n;
int a[50];
for (i = 1; i <= n; i++)
{
a[i] = i;
}
while (o < n - 1) {
for (i = 1; i <= n; i++) {
if (!a[i])
continue;
c++;
if (c==3) {
a[i] = 0;
c=0;
o++;
}
}
}
for (i = 1; i<=n; i++)
if (a[i])
cout << i << " 号!" << endl;
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯