|
5啊哈币
本帖最后由 AQSQ 于 2013-4-6 23:45 编辑
求解:
main()
{
int a,b,c;
printf("请输入三位数:\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d b=%d c=%d",a,b,c);
}
输入方法应该是:1回车2回车3回车,显示结果。
不能用123回车。
而:
main(){
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c){
case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/': printf("%f\n",a/b);break;
default: printf("input error\n");
}
}
输入方法是:1+1回车,显示效果
不能用:1回车+回车1回车
求高手解答,什么原因导致2个题要不同的输入方式?
另外,如果第一个例题输入是一个非数字,显示的是:a=2130567168 c=4199280 b=4199382 又是什么原因呢?
|
最佳答案
查看完整内容
int a,b,c;
printf("请输入三位数:\n");
scanf("%f%c%f",&a,&b,&c);
你的a b c都是int型,scanf读取的时候怎么是float和字符?
这种写法本来就是错误的,编译器会给出警告,下面会发生什么事情就很难预测了
而第二个
scanf("%f%c%f",&a,&c,&b);
你写的格式是,一个float紧邻着一个char,紧邻着一个float
那么输入就要遵循这个格式,而不能在float和char后面出现空白字符(C中的空白字符指空格,tab和回车)
...
|