C程序:如何设置自定义整数范围,将接受的输入数严格限制在该范围内? 让我们考虑一个程序,它必须从用户输入一个数字,只在1到00000000之间的严格范围内。在C语言中可能吗?如果是的话,如果有人能通过修改下面的示例程序来解释这一点,那就太好了 #include<stdio.h> int main() { unsigned long int n, e1,e2,e3; int counter; for(counter=0; counter<10; counter++) { scanf("%ld",&n); // how to restrict this between 1 to 10,000,000,000? e1=n/2; e2=n/3; e3=n/4; if(e1+e2+e3<n) { printf("%ld\n",n); } else printf("%ld\n",e1+e2+e3); } return 0; } #包括 int main() { 无符号长整数n,e1,e2,e3; 整数计数器; 对于(counter=0;counter

C程序:如何设置自定义整数范围,将接受的输入数严格限制在该范围内? 让我们考虑一个程序,它必须从用户输入一个数字,只在1到00000000之间的严格范围内。在C语言中可能吗?如果是的话,如果有人能通过修改下面的示例程序来解释这一点,那就太好了 #include<stdio.h> int main() { unsigned long int n, e1,e2,e3; int counter; for(counter=0; counter<10; counter++) { scanf("%ld",&n); // how to restrict this between 1 to 10,000,000,000? e1=n/2; e2=n/3; e3=n/4; if(e1+e2+e3<n) { printf("%ld\n",n); } else printf("%ld\n",e1+e2+e3); } return 0; } #包括 int main() { 无符号长整数n,e1,e2,e3; 整数计数器; 对于(counter=0;counter,c,int,range,limit,C,Int,Range,Limit,您不能。无论如何,不能直接使用,但有一个例外:对于无符号值,允许使用格式%lu”,对于有符号值,允许使用格式%ld” 要检查输入是否有限制,您必须阅读输入,对照您的限制进行检查,如果超出限制,则再次询问用户。您可以替换: scanf ("%ld",&n); 比如: scanf ("%lu", &n); while ((n < 1) || (n > 10 * 1000 * 1000 * 1000)) { printf ("No! That won't do,

您不能。无论如何,不能直接使用,但有一个例外:对于无符号值,允许使用格式
%lu”
,对于有符号值,允许使用格式
%ld”

要检查输入是否有限制,您必须阅读输入,对照您的限制进行检查,如果超出限制,则再次询问用户。

您可以替换:

scanf ("%ld",&n);
比如:

scanf ("%lu", &n);
while ((n < 1) || (n > 10 * 1000 * 1000 * 1000)) {
    printf ("No! That won't do, try again!\n");
    scanf ("%lu", &n);
}
scanf(“%lu”&n);
而((n<1)|(n>10*1000*1000*1000)){
printf(“不!不行,再试一次!\n”);
scanf(“%lu”、&n);
}

您的上限1000000000(100亿)是一个相当大的数字。它不适合32位无符号整数,您需要更大的数字

因此,由于您知道需要支持的实际数字,因此最好使用显式64位数字(而不是希望系统的
无符号long
足够大)

这需要C99:

#include <stdint.h>

uint64_t n;

if(scanf("%" PRIu64, &n) == 1)
{
  if(n >= 1 && n <= UINT64_C(10000000000))
   printf("Great, number accepted\n");
  else
   printf("Please enter a number in range 1..10000000000\n");
}
else
  printf("Please enter a number.\n");
#包括
uint64\u t n;
如果(scanf(“%”PRIu64,&n)==1)
{

如果(n>=1&&n是的。您尝试过什么?只需在
scanf
之后添加
if
条件,以检查用户输入的值。您的意思是在输入时?还是在验证时?后者是一个if-else选项,前者的麻烦将超过其价值。