C语言这样写为什么不对啊,求大神指教,谢谢!
题目:13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表处理。#include<stdio.h>#def...
题目:13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表处理。
#include <stdio.h>
#define N 13
struct Person
{
int number;
int nextp;
}link[N + 1];
int main()
{
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 ("sequence that persons leave the circle:\n");
while (count < N - 1)
{
i = 0;
while (i != 3)
{
h = link[h].nextp;
if (link[h].number)
{
i ++;
}
}
printf ("%4d", link[h].number);
link[h].number = 0;
count ++;
}
printf ("\nThe last one is");
for (i = 1; i <= N; i ++)
{
if (link[i].number)
{
printf ("%3d", link[i].number);
}
}
printf ("\n");
return 0;
} 展开
#include <stdio.h>
#define N 13
struct Person
{
int number;
int nextp;
}link[N + 1];
int main()
{
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 ("sequence that persons leave the circle:\n");
while (count < N - 1)
{
i = 0;
while (i != 3)
{
h = link[h].nextp;
if (link[h].number)
{
i ++;
}
}
printf ("%4d", link[h].number);
link[h].number = 0;
count ++;
}
printf ("\nThe last one is");
for (i = 1; i <= N; i ++)
{
if (link[i].number)
{
printf ("%3d", link[i].number);
}
}
printf ("\n");
return 0;
} 展开
1个回答
展开全部
link[N].number 没有初始化
for (i = 1; i <= N; i ++)
{
if (i == N)
{
link[i].nextp = 1;
}
else
{
link[i].nextp = i + 1;
link[i].number = i;
}
}
这种不对称的代码你看着不觉得难受么
更多追问追答
追问
你这不是跟我一样吗?
追答
是一样的,把错的地方告诉你了,以为这明显的问题不需要再说怎么改了(实际上改法也有好多啊),比如说
for (i = 1; i <= N; i ++)
{
if (i == N)
{
link[i].nextp = 1;
}
else
{
link[i].nextp = i + 1;
}
link[i].number = i;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |