您好我正在学习C编程课程的入门测试,昨天我正在尝试编写这个程序,打印出2和用户输入的数字之间的偶数素数,我花了大约2个小时试图正确编写它最终我做到了.我在下面上传了2张照片.其中一个显示正确的代码和正确的输出.另一个显示我第一次尝试这个问题并没有正常工作,我回过头来使它尽可能地与工作代码类似,而不是直接复制和粘贴所有内容.
不幸的是,新用户不允许发布图片,希望这些链接可以正常使用.
这失败了,它不会打印自然平方根范围内的所有数字:
for (i = 2; i <= x; i++)
{
//non relevant line
a = sqrt(i);
aa = a * a;
if (aa == i);
printf("%d ",i);
}
Run Code Online (Sandbox Code Playgroud)
来源:http://i.imgur.com/WGG6n.jpg
虽然这成功了,但使用自然sqaure root打印偶数
for (i = 2; i <= x; i++)
{
a = sqrt(i);
aa = a * a;
if (aa == i && ((i/2) *2) == i)
printf("%d ", i);
}
Run Code Online (Sandbox Code Playgroud)
来源:http://i.imgur.com/Kpvpq.jpg
希望你能看到和阅读我在这里的屏幕截图.我知道'错误代码'图片没有(i/2)*2 == i部分,但我认为它仍会打印奇数和偶数,它还有代码来计算"sqrd"但是这不应该影响输出.如果我在最后一部分错了,请纠正我.
是的我正在使用Dev-C++,我读过这个程序有点蹩脚,但我最初在代码:: blocks上做了这个,它做了同样的事情......
我非常感谢任何建议或建议,以便在实际获取代码为我工作前2小时我做错了什么.
亚当,谢谢你
你在"那个"中的代码包括:
if (aa == i);
// ^
printf(...);
Run Code Online (Sandbox Code Playgroud)
[注意;if条件的结尾]
因此,如果aa == i- 发生一个空语句,并且始终发生打印,因为它超出了if语句的范围.
为了避免将来出现此问题,您可能需要使用明确的范围界定1 [使用{,}后控制流语句] -在你的编程语言的第一步,至少.
1:斯巴达程序员可能会讨厌这个说法
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |