超级甲鱼粉 发表于 2020-3-7 12:53:14

c语言初学问题求助

这个程序为什么输入不是3位数的时候没有检验错误再次输入的能力,求助,十分感谢。


#include <stdio.h>

void main()
{
        int x , y , i , j , k;
        printf("Please input a three figures :\n");
       
        scanf("%d",&x);
        while(!(99<x<10000))
        {
                scanf("%d",&x);
        }

        i = x/100;
        j = (x - 100*i)/10;
        k = x - 100*i - 10*j;
        y = 100*k + j*10 + i;

        printf("%d\n",y);


}

qiuyouzhi 发表于 2020-3-7 12:59:44

???
因为你没有写判断输入数据长度的代码啊

墨羽岚 发表于 2020-3-7 16:30:05

你的目的是要把一个3或4位数逆序输出吧。连续判断(即连用多个<或>,比如你的!(99<x<10000))在c语言里面是不规范的,还是推荐你改成(x<=99||x>=10000);然后再在第二个scanf上面一行继续加上你的printf

4goodworld 发表于 2020-3-7 16:31:37

(99<x<10000)C语言有这个写法吗?
应该是 x>99 || x<10000

超级甲鱼粉 发表于 2020-3-7 16:31:47

qiuyouzhi 发表于 2020-3-7 12:59
???
因为你没有写判断输入数据长度的代码啊

啊?while(!(99<x<10000))不就是判断么

qiuyouzhi 发表于 2020-3-7 16:33:42

超级甲鱼粉 发表于 2020-3-7 16:31
啊?while(!(99

抱歉哈,一开始以为是判断值
这么写:
while (!(99 < x and x < 10000))

超级甲鱼粉 发表于 2020-3-7 16:44:54

qiuyouzhi 发表于 2020-3-7 16:33
抱歉哈,一开始以为是判断值
这么写:

奥懂了谢谢

超级甲鱼粉 发表于 2020-3-7 16:45:52

墨羽岚 发表于 2020-3-7 16:30
你的目的是要把一个3或4位数逆序输出吧。连续判断(即连用多个,比如你的!(99

懂了懂了谢谢
页: [1]
查看完整版本: c语言初学问题求助