typedef struct spieler* pSpieler;
struct spieler
{
char vorname[LENGTH];
char nachname[LENGTH];
int rueckennummer;
int erzielteTore;
pSpieler pNext;
};
函数sortiereTore应该对列表中的元素进行排序,其中erzielteTore值最小的那个是第一个,值最大的那个应该是最后一个。
void sortiereTore()
{
pSpieler pPrev = pErsterSpieler;
pSpieler pAkt = pErsterSpieler;
pSpieler pAfter = pAkt->pNext;
int flag = 1;
while(flag != 0)
{
flag = 0;
while (pAfter != NULL)
{
if ((pAfter->erzielteTore) < (pAkt->erzielteTore))
{
if (pAkt == pErsterSpieler)
{
pErsterSpieler = pAfter;
}
pAkt->pNext = pAfter->pNext;
pAfter->pNext = pAkt;
pPrev->pNext = pAfter;
flag = 1;
pPrev = pAfter;
pAfter = pAkt->pNext;
}
else
{
pPrev = pAkt;
pAkt = pAfter;
pAfter = pAfter->pNext;
}
}
pPrev = pErsterSpieler;
pAkt = pErsterSpieler;
pAfter = pAkt->pNext;
}
}
我不知道如何解决问题,希望有人能帮助我。 非常感谢:)
答案 0 :(得分:0)
让我们将此问题解释为&#34;如何调试我的程序?&#34;而不是&#34;我的计划出了什么问题?&#34;因为回答第二个问题会让你无法成为程序员。你必须学会自己修复bug。
调试自己的程序始终是一样的。这是关键所在:
您认为代码的作用与实际执行的内容之间存在差异。这会阻止您查看更改代码的位置以使其正确。
因此,分两步进行:
消除您的思维与实际发生的事情之间的差异。然后你的心智模型将与程序实际执行的内容重合,而不是你错误地认为你在思考它做了什么。
使用您对计划所做的新的,正确的知识来设计和实施针对实际行为的修复。如果您的程序接近正确,这是一个非常小的步骤。但有时候 - 如果你最初的想法远非正确 - 你可能需要抛弃你的第一次尝试并重新开始。
第1步 - 特别是对于像这样的小型学习程序 - 通常从创建可能存在错误的最小示例开始。 (因此,证明MCVE的SO实践。)然后执行程序语句逐个语句,可视化每个步骤,直到产生不良结果。
&#34;陈述声明&#34;可以意味着使用调试器单步执行,插入print
以便程序本身生成跟踪,或使用您自己的头作为处理器,使用纸和笔记忆。
无论你做什么,你的努力都是 学习 ,其中程序的实际执行与你执行的想法不同。
换句话说,你的目标是找到某些特定的声明,你想到程序将某个变量设置为某个值(或不是),它实际上是设置一个不同的值,而不是设置(或者实际设置它,当你认为它不是)。
此时,必须达成谅解。 &#34;灯必须继续亮。&#34;掌握自己的错误会很棒。恭喜!
然后继续第2步。
你做得越多,你就会越好。但是你必须自己做。您无法通过要求人员为您调试来学习调试。