代码展示
#include<stdio.h>
int main(void)
{
int a,b;
float x,y;
char c1,c2;
scanf("%d %d",&a,&b);
printf("a=%d b=%d\n",a,b);
scanf("%f %f",&x,&y);
printf("x=%.2f y=%.2f\n",x,y);
scanf("%c %c",&c1,&c2);
printf("c1=%c c2=%c",c1,c2);
}
运行结果
问题发现
发现前面的1 2整形和3.4 5.5的浮点数都被打印但是a b的字符却出现了乱码
解决方法
int main(void)
{
int a,b;
char c1, c2;
float x, y;
scanf("%c %c", &c1, &c2);
printf("c1= %c c2= %c\n", c1, c2);
scanf("%d %d",&a,&b);
printf("a=%d b=%d\n", a,b);
scanf("%f %f",&x,&y);
printf("x=%.1f y=%.1f\n", x,y);
}
将打印字符放在最前面
问题分析
逻辑上打印顺序不会导致错误乱码,但是在运行结果上看输入字符放在整形打印和字符打印后都会出现打印出错的现象。