基本的问题,输入的格式?

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:20:49
已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是
int a1,a2; char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A)10A 20B< CR> B)10 A 20 B<CR>
C)10A20<CR> D)10A20 B<cR>。

答案是A 为什么中间要加空格 B C D为什么不对?
可是我按照A的答案输入是对的

10A 20B 中间有空格也对啊

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A)10A 20B< CR> B)10 A 20 B<CR>
C)10A20<CR> D)10A20 B<cR>

在%c时输入时,不会跳过空格
A://对的.
B:10 A 20 B //10->a1,[空格]->c1,'A'->a2此时出错...
C:10A20 //a1 c1 a2均得到值,等待最后c2的值
D:10A20 B //10->a1,[空格]->c1,20->a2,[空格]->c2,'B'忽略,依然在IO缓存中...语法没错,但是c2的值不是'B'

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A)10A 20B
A 也是错的。

空格会被当成字符赋给A和B

就是说,C的输入是按照“异常输入”分割的,空格是一个字符,但不是一个整数。