C语言编程。为什么';这';代码工作,但不是';那';密码?

C语言编程。为什么';这';代码工作,但不是';那';密码?,c,C,您好,我正在学习C编程入门课程的一个测试,昨天我试图编写这个程序来打印2和用户输入的任何数字之间的偶数素数,我花了大约2个小时试图正确地编写它,最终我做到了。我在下面上传了两张照片。其中一个显示正确的代码和正确的输出。另一个显示了我在这个问题上的第一次尝试,它不能正常工作,我返回并使它尽可能类似于工作代码,而不直接复制和粘贴所有内容 不幸的是,新用户不允许发布图片,希望下面的链接能起作用 此操作失败,无法打印自然平方根范围内的所有数字: for (i = 2; i <= x; i++) {

您好,我正在学习C编程入门课程的一个测试,昨天我试图编写这个程序来打印2和用户输入的任何数字之间的偶数素数,我花了大约2个小时试图正确地编写它,最终我做到了。我在下面上传了两张照片。其中一个显示正确的代码和正确的输出。另一个显示了我在这个问题上的第一次尝试,它不能正常工作,我返回并使它尽可能类似于工作代码,而不直接复制和粘贴所有内容

不幸的是,新用户不允许发布图片,希望下面的链接能起作用

此操作失败,无法打印自然平方根范围内的所有数字:

for (i = 2; i <= x; i++)
{
   //non relevant line
   a = sqrt(i);
   aa = a * a;
   if (aa == i); 
       printf("%d ",i);
}

for(i=2;i您在“that”中的代码包括:

if (aa == i);
//          ^
   printf(...);
[注意if条件末尾的
]

因此,如果
aa==i
,则会出现一个空语句,并且打印总是发生,因为它超出了if语句的范围

为了避免将来出现这个问题,您可能希望使用显式作用域1[在控制流语句之后使用
{
}
)——至少在编程语言的第一步中是这样



1:斯巴达程序员可能会讨厌这种说法

这种错误很常见。我使用“跨过”、“跨入”、“断点”和“观察窗口”调试我的程序。使用这些选项,你可以一行一行地执行你的程序,并跟踪每行中使用的变量。这样,你就可以知道哪行没有按所需的方式执行。

请。请。把你的实际代码放在问题本身中。如果我们甚至不能复制/pas,怎么能指望有人帮助你调试te?你不需要发布图片,你可以(而且应该)发布将相关代码直接发布到您的问题中。唯一的偶数素数是2。您想做什么?欢迎使用StackOverflow。您需要在此处发布代码;如果没有它,您的问题将毫无意义。此处的问题应该独立存在,以便对未来的读者保持意义。此外,代码图像是无用的,因为代码很难阅读,无法复制并粘贴到代码编辑器或IDE中。请编辑您的问题,将代码作为文本提供在此处,如果可以,我们将尝试帮助您找出问题所在。谢谢。:)我已将代码的相关部分添加到问题正文中,希望我没有任何重大的打字错误-如果我有,欢迎您编辑和修复它。谢谢大家的输入,特别是阿米特。我很抱歉发布了一个错误如此简单的问题,我真的应该学会更好地阅读我的作品。我已经做了几个小时了,我的眼睛一定是太累了。我也明白为什么你们都说要在我的问题中加入实际的“文本”代码,从现在起我会这么做。@AdamJohnston:你不应该为“有简单错误的问题”感到抱歉-每个人都会学习!我很高兴你明白了,下次你应该发布代码本身,而不是它的图片。另外:你应该有一个能解决你的问题的答案。
if (aa == i);
//          ^
   printf(...);