这个程序是输入一个三位整数,并且依次输出该数的正(负)号和百位、十位、个位数字。
但我不明白既然是要求输入三位数,那么这句话(scanf("%d",&x);)怎么不写成(scanf("%3d",&x);)?我把这两个句子都实践了一下,但是没发现输出结果有什么不同。请问这两个句子在这里有区别吗?
# include "math.h"
main()
{ char c1,c2,c3,c4;
int x;
scanf("%d",&x);
c4 = x >=0?'+':'-';
x = abs(x);
c3 = x%10 + 48;
x = x/10;
c2 = x%10 + 48;
c1 = x/10 + 48;
printf("%c\n%c\n%c\n%c\n",c4,c1,c2,c3);
}
----------------解决方案--------------------------------------------------------
输入是不能规定它的数据长度.
----------------解决方案--------------------------------------------------------
我觉得输入的时候好像没有问题吧,如果换作是输出 就不同了。你可以试试的。
----------------解决方案--------------------------------------------------------
输入是不能规定它的数据长度.
!!!
是我搞错了~~!我把输出格式字符表,当成了输入。
那既然输入不能规定它的数据长度。但在我错误的理解下
将scanf("%d",&x);换成了scanf("%3d",&x);,并且实践了,整个程序并没有因此出现什么问题,新问题又出现了!
那这两个句子有什么区别吗?~~
----------------解决方案--------------------------------------------------------
另外,请问下,在Turbo C中的解释中如何输入中文?
就是/ * 这里的中文如何输入?我切换不了输入法* /
虽然可以保存程序后到Windows用记事本编辑再添加,但我想知道,在Turbo C中可以输入中文吗?怎么输入
----------------解决方案--------------------------------------------------------
用CCDOS或者UCDOS平台就可以了
不过最好使用WINTC或者c-free
----------------解决方案--------------------------------------------------------
考试要求是Turbo c。。。
----------------解决方案--------------------------------------------------------
up
----------------解决方案--------------------------------------------------------
输入是不能规定它的数据长度.
nuciewth搞错了,可以规定数据长度,比如scanf("%3d%d",&a,&b);(a,b都为整型)
输入1234567时,系统会将123赋值给a,而将4567赋值给b
还有一个*号的用法,用来跳过指定的列数,比如:scanf("%3d%*3d%d",&a,&b);
输入1234567系统会将123赋值给a,而将7赋值给b
还有一点就是不能规定的是数值的精度,比如scanf("%5.3f",&a);(a是浮点型)
----------------解决方案--------------------------------------------------------
楼主怎么说输入后结果没有区别,当你输入的数的位数大于3的时候你再看看
----------------解决方案--------------------------------------------------------