学习 CS50 实验 1 的 C:人口增长 - 我的程序运行,但没有达到我的预期



我的程序运行,但实际上并没有完成我想让它做的事情。它会提示开始大小,然后提示结束大小,就这样了。我希望它使用输入的数字来计算需要多少年,但我似乎无法让它做到这一点。提前感谢您的任何建议!

我的代码如下:

#include <cs50.h>
#include <stdio.h>
int main(void)
{
// TO DO: Prompt for start size
int start;
do
{
start = get_int("Start Size: ");
}
while (start < 9);
// TO DO: Prompt for end size
int end;
do
{
end = get_int("End Size: ");
}
while (end <= start);
// TO DO: Calculate number of years until we reach threshold
int years;
do
{
years = (start + start/3 - start/4);
}
while (end > start);
// TO DO: Print number of years
printf("Years:%in", years);
}

正如@kaylum所建议的,如果使用调试器逐步完成程序,您将很容易发现程序有什么问题。

以下是关于在Linux和Windows上调试的两个堆栈溢出问题:

  • 如何调试C程序
  • 如何在Windows上调试C程序

尽管我猜您的课程人员已经建议了一些开发环境,它本身允许调试,可能与这些问题中的建议有点不同。

如果您要调试程序,逐步执行各个命令,您会注意到执行会不断迭代do ... while (end > start);循环,正如@UnholySheep所指出的。然后你会想";等等,为什么它不退出循环"您会注意到,您只更改了years的值,而您的循环退出条件将重新考虑endstart,它们不会更改。

此外,为了将来参考,大多数StackOverflow用户希望提问者执行他们的";尽职调查";,在向我们寻求解决方案之前,做出合理的努力来解决他们的问题。既然您了解了调试器,请在询问";为什么我的程序没有达到我的预期";。

最新更新