13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。要求用结构体编程实现。
程序的运行示例如下:
出圈成员及顺序: 3 6 9 12 2 7 11 4 10 5 1 8
最后的成员是: 13
参考答案
#include
#define N 13
struct person
{
int number;
int nextp;
} link[N + 1];//这边为什么要让数组长度为N+1?
int main(void)
{
int i, count, h;
/* 建立队列 */
for (i = 1; i <= N; i++)
{
if (i == N)
{
link[i].nextp = 1;
}
else
{
link[i].nextp = i + 1;
}
link[i].number = i;
}
printf("\n");
count = 0;
h = N;
printf("出圈成员及顺序:");
while (count < N - 1)
{
i = 0;
while (i != 3)
{
h = link[h].nextp;
if (link[h].number)
{
i++;
}
}
printf("%3d", link[h].number);
link[h].number = 0;
count++;
}
printf("\n最后的成员是:");
for (i = 1; i <= N; i++)
{
if (link[i].number)
{
printf("%3d", link[i].number);
}
}
return 0;
}
还有如果调试的话调试过头了能不能从上一个断点到下一个断点啊?
求大神指教!
新手求大神指教,谢谢!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料