#include <iostream>
int main(){
int a;
char b;
scanf("%d",&a);
scanf("%c",&b);
printf("%d\n",a);
printf("%c",b);
return 0;
}
%s和%d是以'\n'当做要输入的结束,而不吸收'\n',所以当给b赋值时由于上次输入留下的'\n'没有被吸收,‘%c’就要吸收它了。导致你没有输入b的值就直接出结果了。你可以把上面得首先给int赋初值改成给一个字符串赋初值,后跟一个给char型字符赋初值。你会发现同样的问题,%c真是来者不拒。