代码
int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
应该是必须不能加。写个代码运行一下看看结果就知道了。代码如下:
#include <stdio.h>
int main()
{
int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("a1=%d\n",a1);
printf("a2=%d\n",a2);
printf("c1=%c\n",c1);
printf("c2=%c\n",c2);
return 0;
}
不加空格的情况:
加空格的情况:
原因:
%d后面跟%c的时候,%c会直接读取整数后面的字符,也就是在输入一个整数后,编译器会把不能分配给整数的字符分配给c1,举个例子,假如输入123a,那么a不是数字,所以不能分配给整数,整数部分是123,a分配给c1。所以如果在123后面加了空格,空格会被分配给c1,而a就会导致后面的%d读取错误。所以%d和%c之间没有空格的时候,输入的整数和字符之间也不能有空格。
如有帮助,望采纳,谢谢。