【问题标题】:C won't recognize negative numbers as inputC 不会将负数识别为输入
【发布时间】: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


【解决方案1】:

你在 else{printf} 中有 printf,它应该在外面:

    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);
}

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2012-06-02
    相关资源
    最近更新 更多