为什么输入1,结果是100啊#include <stdio.
c语言吧
全部回复
仅看楼主
level 7
1033039101 楼主
为什么输入1,结果是100啊
#include <stdio.h>
main()
{
int x,a,b,c,d,t;
printf("输入一个不超过四位的数\n");
scanf("%d",&x);
if(x<10)
t=1;
if(x<100)
t=2;
if(x<1000)
t=3;
else
t=4;
switch(t)
{
case 1:printf("%d\n",x);break;
case 2:a=x/10;b=x%10;x=10*b+a;
printf("%d\n",x);break;
case 3:a=x/100;b=(x%100)/10;c=x%10;x=100*c+10*b+a;
printf("%d\n",x);break;
case 4:a=x/1000;b=(x%1000)/100;c=(x%100)/10;d=x%10;x=1000*d+100*c+10*b+a;
printf("%d\n",x);break;
}
}
2019年04月07日 15点04分 1
level 7
1033039101 楼主
3位数和4位数都可以,就1位数和2位数不对
2019年04月07日 15点04分 2
level 8
除了第一个if以外后边的if改成else if
2019年04月07日 15点04分 4
我试试
2019年04月07日 23点04分
level 3
看不懂
2019年04月07日 15点04分 6
level 8
你的 if 语句要是这么写的话,最终 t 只会是 3 或 4,而不会是 1 或 2。
我所使用的 CLion 已经有提示了:
2019年04月07日 23点04分 7
是不是换成else if 就可以了
2019年04月07日 23点04分
@1033039101 是的,你只用 if 的话,各项之间不构成对立关系,因此可能会执行不同 if 中的语句。 也就是第一个 if 为 true,执行了相应的內容,但因为为第二个 if 也会接着判断并且为 true,所以也会执行相应的內容。
2019年04月08日 02点04分
@1033039101 else if 可以将不同项之间构成对立关系。
2019年04月08日 02点04分
@2828qwk 明白了,谢谢
2019年04月08日 07点04分
1