练习:判断输入数字的大小

原代码分析

#include <stdio.h>

int main(void)
{
  int number = 0;
  printf("\n输入一个整数在 1 到 10之间 : ");
  scanf("%d",&number);

  if (number > 5)
    printf("你输入的 %d 大于 5\n", number);

  if (number < 6)
    printf("你输入的 %d 小于 6\n", number);
  return 0;
}Code language: PHP (php)

运行逻辑:

输入第一个 if (number > 5)第二个 if (number < 6)输出结果
1~5假,跳过真,执行“小于 6”
6~10真,执行假,跳过“大于 5”
6​真(6>5)假(6<6不成立)“大于 5”
5​假(5>5不成立)真(5<6)“小于 6”

存在的问题:

  1. 输入 5 或 6 时输出正确,但输入 5 和 6 之间的数(不存在整数)逻辑上覆盖了所有情况。
  2. 遗漏了等于 5 和等于 6 的明确提示,且两个独立 if 无法处理”等于”的第三种情况。
  3. 题目要求”确定该数字有多大”,更合理的逻辑是分成三档:小于6、等于5或6、大于5(或更精细地区分)。

改进版本一:补充”等于”情况(用独立 if)

#include <stdio.h>

int main(void)
{
  int number = 0;
  printf("\n输入一个整数在 1 到 10之间 : ");
  scanf("%d", &number);

  if (number > 5)
    printf("你输入的 %d 大于 5\n", number);
  else if (number < 6)
    printf("你输入的 %d 小于 6\n", number);
  else
    printf("你输入的 %d 等于 5 或 6\n", number);

  return 0;
}Code language: PHP (php)

注意:else if 和 else 尚未学到,此处仅作展示。用已学知识(仅 if)应写成三个独立判断:

改进版本二:仅用 if(符合当前学习进度)

#include <stdio.h>

int main(void)
{
  int number = 0;
  printf("\n输入一个整数在 1 到 10之间 : ");
  scanf("%d", &number);

  if (number > 5)
    printf("你输入的 %d 大于 5\n", number);

  if (number < 6)
    printf("你输入的 %d 小于 6\n", number);

  if (number == 5 || number == 6)
    printf("你输入的 %d 刚好是边界值\n", number);

  return 0;
}Code language: PHP (php)

改进版本三:更精细的分档

#include <stdio.h>

int main(void)
{
  int number = 0;
  printf("\n输入一个整数在 1 到 10之间 : ");
  scanf("%d", &number);

  if (number >= 8)
    printf("你输入的 %d 很大(8~10)\n", number);
  else if (number >= 5)
    printf("你输入的 %d 中等(5~7)\n", number);
  else
    printf("你输入的 %d 较小(1~4)\n", number);

  return 0;
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注