c - 检查 1 到 100 之间的数字时出现问题

标签 c

我正在尝试编写一个 C 程序,它可以接受 1 到 100 之间的 10 个数字。如果输入超出范围的值,则应显示错误消息。

我设法编写了以下代码来检查数字是否在 1 到 100 之间

#include <stdio.h>
int main() {
  int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;
  printf("\nEnter the first number : ");
  scanf("%d", & num1);
  printf("\nEnter the second number : ");
  scanf("%d", & num2);
  printf("\nEnter the third number : ");
  scanf("%d", & num3);
  printf("\nEnter the fourth number : ");
  scanf("%d", & num4);
  printf("\nEnter the fifth number : ");
  scanf("%d", & num5);
  printf("\nEnter the sixth number : ");
  scanf("%d", & num6);
  printf("\nEnter the seventh number : ");
  scanf("%d", & num7);
  printf("\nEnter the eighth number : ");
  scanf("%d", & num8);
  printf("\nEnter the nineth number : ");
  scanf("%d", & num9);
  printf("\nEnter the tenth number : ");
  scanf("%d", & num10);
  if ((num1 <= 1 && num2 <= 1 && num3 <= 1 && num4 <= 1 && num5 <= 1 && num6 <= 1 && num7 <= 1 && num8 <= 1 && num9 <= 1 && num10 <= 1) && (num1 >= 100 && num2 >= 100 && num3 >= 100 && num4 >= 100 && num5 >= 100 && num6 >= 100 && num7 >= 100 && num8 >= 100 && num9 >= 100 && num10 >= 100)) {
    printf("good");
    printf("Numbers are good");
  } else {
    printf("All numbers must be between 1 to 100");
  }
  return (0);
}

当我运行代码时,我得到此输出“所有数字必须在 1 到 100 之间”,即使我输入的数字在 1-100 范围之间。我希望输出是“数字很好”。请帮忙。

最佳答案

你的测试是错误的,你想要(n >= 1) && (n <= 100)不是(n <= 1) && (n >= 100)

还可以使用循环来管理所有输入,而不是重复代码,想象一下如果您必须输入 1000 个数字。

建议:

#include <stdio.h>
#define N 10
int main() {
  int isAllOk = 1;
  int nums[N]; /* to save the values to have them available later even not used in your question */
  for (int i = 0; i != N; ++i) {
    printf("\nEnter number %d : ", i + 1);
    if (scanf("%d", & nums[i]) != 1) {
      fprintf(stderr, "invalid input\n");
      return -1;
    }
    isAllOk &= ((nums[i] >= 1) && (nums[i] <= 100));
  }
  puts((isAllOk) ? "Numbers are good" : "All numbers must be between 1 to 100");
  return (0);
}

编译与执行:

pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra l.c
pi@raspberrypi:/tmp $ ./a.out
Enter number 1 : 1
Enter number 2 : 2
Enter number 3 : 44
Enter number 4 : 3
Enter number 5 : 3
Enter number 6 : 3
Enter number 7 : 3
Enter number 8 : 3
Enter number 9 : 3
Enter number 10 : 3
Numbers are good
pi@raspberrypi:/tmp $ ./a.out
Enter number 1 : 111111111
Enter number 2 : 23
Enter number 3 : 3
Enter number 4 : 3
Enter number 5 : 3
Enter number 6 : 3
Enter number 7 : 3
Enter number 8 : 3
Enter number 9 : 3
Enter number 10 : 3
All numbers must be between 1 to 100

请注意,当数字不在 1 到 100 之间时,也可以立即停止,但这似乎与您的请求不兼容。

关于c - 检查 1 到 100 之间的数字时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55356559/

相关文章:

c - 服务器处理多个客户端 - C 系统编程

c - 在 C 语言中使用#pragma

c - 纯C : trim all characters in a string after a word occurs

c - 如何在没有任何优化的情况下编译C程序

c - 使用 rmmod (del_gendisk) 卸载时 Linux block 设备模块挂起

c - "free"怎么知道有多少字节需要释放

c - 如何在多个源文件中使用相同的结构?

通过C中给定范围内的用户输入检查质数

c++ - 单向链表和填充后不需要的第一个元素

c++ - C 或 C++ 中的文本压缩