新生儿梅毒的评估要点:有关C语言scanf输入问题

来源:百度文库 编辑:高考问答 时间:2024/05/07 04:32:59
程序如下:
main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
scanf(" %c %c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
}输入a=7 b=3(此处按回车符)
x=8.5 y=71.83(此处按回车符)
c1=A,c2=a(此处按回车符)
这个程序运行正确,但是我不明白为什么第三个scanf中的格式符前要加空格,说是抵消第二个scanf输入后的回车符,那为什么第二个scanf中的格式符前不用加空格呢?

因为第二个scanf是输入浮点型,自动把回车忽略了。而第三个如果不加空格,scanf读到回车认为输入了一个空字符。如果不用空格用\n也可以。

因为第三个scanf要接收的是字符型,而回车也是字符所以如果没有的话,C1就接收不到数了。而第二个scanf要接收的不是字符,就无所谓了。