【发布时间】:2016-11-24 22:42:46
【问题描述】:
该程序旨在将三个整数作为输入并返回最小值。这是我的第一次尝试:
int first, second, third;
printf("Please enter three numbers:\n");
scanf("%d %d %d", &first, &second, &third);
int min;
if (first<second && first<third) {
min = first;
} else if (second<first && second<third) {
min = second;
} else {
min = third;
printf("The minimum value is: %d\n", min);
}
它适用于除负数之外的所有内容。如果输入为负数,则不会返回任何内容。然后我把代码改成这样:
if (first<second ) {
if (first<third)
min = first;
else
min = third;
} else if (second<first) {
if (second<third)
min = second;
else
min = third;
min = second;
}
printf("The minimum value is: %d\n", min);
这个版本完美运行,但我不明白为什么第一个版本不适用于底片。有什么区别?
【问题讨论】:
-
你能详细说明发生了什么吗? “它不会返回任何东西”是什么意思?是崩溃、不响应输入还是其他原因?
-
在 v1 中,您的
printf仅在min=3分支中。要么你错误地剪切和粘贴了你的代码,要么你的代码只在这种情况下打印(请注意,v2 根本不会打印任何东西......) -
最后一个
min = second;完全错误。它不能完美地工作。 -
@John3136 你说得对!做到了,谢谢!虽然现在我不明白为什么如果它有这样的错误,它为什么能正常工作......(我在 v2 上省略了 printf,因为我认为它与问题无关。将来会推荐它发布整篇文章?)
-
@user9484 如果您在 v1 中输入 1 2 3 是否有效?看起来不应该。至于发什么:尽量少。在这种情况下,由于问题实际上是关于打印出来的内容,因此包含打印内容非常相关。
标签: c if-statement operators