c语言 如何定义一个整形变量 同时限定输入位数?

如题所述

假设限定位数为n(n < 10),设置循环读入各个阿拉伯字符(含+、-,其他非阿拉伯字符舍弃),并将读入的字符同步转换为一个整数,循环结束后就可得到所需的整形变量的值。代码:

int i,n,digit,sign = 1,num = 0;
scanf("%d",&n); // 读入限制位数
for(i = 0; i < n; ++i) {
    digit = getchar();
    if(digit = '\n') break; // 读数结束
    if(digit = '+') sign = 1;
    else if(digit = '-') sign = -1;
    if(digit >= '0' && digit <= '9')
        num = 10 * num + digit - '0';
}
num *= sign; // 这是读入的整数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-27
你可以将这个整型变量的表达范围给限制住,但是直接限制输入似乎不容易啊?

直接限制范围:定义成int x:8;本回答被网友采纳
第2个回答  2013-03-27
输入后做强制转换,然后在做与操作
第3个回答  2013-03-27
int a;
scanf("%2d", &a); //2可以是其他数字 代表要输入的位数
第4个回答  2013-03-27
用一个while循环来作出限制,如果输入的数比9...9(你要限定的位数那么多个9)大,则要求用户重新输入。

int n=0;
printf("请输入一个不多于5位的数\n");
while(1)
{
scanf("%d", &n);
if (n<99999)
break;
else
printf("输入过大,请输入一个不多于5位的数\n");
getchar();//“吃掉”换行符
}本回答被网友采纳
相似回答