C语言入门,两次程序一样,但是运行结果不同求大神解答

#include<stdio.h>int main(){int x=100;long int y;char ch;float f;printf("请分别输入一个字符、长整数、一个单精度浮点数:\n");printf("注意数据之间的分隔符\n");scanf("%d%dl%c%f",&x,&y,&ch,&f);printf("x=%d,y=%dl,ch:%c,f:%f\n", x, y,ch,f);return 0;}不知道是不是我程序有错,第一次运行的时候输入:a 45234 123.45结果是x=100 y=45234 ch:a f:1.234500
第二次结果如图,求大神解答

首先:

scanf是不区分空格的,你可以这样改:
scanf("%d,%d,%c,%f",&x,&y,&ch,&f);

其次:

printf("请分别输入一个字符、长整数、一个单精度浮点数:\n");

scanf("%d%dl%c%f",&x,&y,&ch,&f);

输入:a 45234 123.45

这三者的关系很混乱...不对应啊

printf只要输入三个字符

scanf中却是4个

输入只输入了3个...

最不靠谱的是三个输入的值的顺序和scanf中变量顺序的还不对应...

改一下:

printf("请分别输入一个整形、长整数、一个字符、一个单精度浮点数:\n");

printf("注意输入的顺序和数据之间的分隔符\n");

scanf("%d,%ld,%c,%f",&x,&y,&ch,&f);

最后:

scanf("%d%dl%c%f",&x,&y,&ch,&f);

其中长整形也是用%ld而不是%dl

输入:123,456,t,6.7

输出结果:x=123,y=456,ch:t,f:6.700000

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-08-29
因为scanf里的参数格式应该是 “%ld” ,你写成了“%dl”,所以把“l”也录进去了,会产生奇怪的结果。本回答被网友采纳
第2个回答  2015-11-06
sacnf("%c %ld %f",&ch,&y,&f);

第3个回答  2015-11-06
我怎么感觉要输入四个数字呢?呵呵追问

什么四个数字

追答

x,y,ch,f四个数字