请问一下我哪里错了啊

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:37:57
我想编比如说 输入 4+4 输出 =8 的 ,但输出是 =-56 啊为什么啊 谢谢大家了
#include "stdio.h"

main()
{
int m , s;
float a , b , c;
char x,n;
printf("please input\n");
scanf("%f%1s%f" ,&a , &x ,&b);
m=(int)x;
switch (m)
{
case 43:
c = a + b;
printf("=%d" ,&c);
break;
case 42:
c = a - b;
printf("=%d",&c);
break;
default:
printf("wrong") ;
}
n = getchar();
}
对于:
scanf("%f%1s%f" ,&a , &x ,&b);
这句有问题。
首先格式不对。x是字符,不是字符串,所以应该用%c
然后
如果你想输入的x字符是'2'怎么区分呢?
比如你想a是1,x是字符'2'(当然你这里输入'+'或者'-'),b是数字3。
程序怎么知道呢
怎样才能让程序知道呢 ?

scanf("%f%1s%f" ,&a , &x ,&b);
这句有问题。
首先格式不对。x是字符,不是字符串,所以应该用%c
然后
如果你想输入的x字符是'2'怎么区分呢?
比如你想a是1,x是字符'2'(当然你这里输入'+'或者'-'),b是数字3。
程序怎么知道呢?

然后
printf("=%d" ,&c);
应该是
printf("=%f" ,c); 但这样还是有问题
最好写成
printf("=%f" ,&c);或者printf("=%d" ,(int)c);

问题在输入上
可以把abx的值都输出来看看就知道了
要么换个形式输入

%1s错了 应该是%c吧 虽说是一位但毕竟不是字符串啊(但这个可能不是错误 我还不确定)
printf("=%f" ,&c); //将&去掉 下一个也是 d改成f

注意你的a,b,c是float,不是int
所以你输出的时候printf应该是%f啊
最好把调试结果发上来
如果你想输入的x字符是'2'怎么区分呢?
比如你想a是1,x是字符'2'(当然你这里输入'+'或者'-'),b是数字3。
程序怎么知道呢?
这个问题,你要知道c中的默认分隔符是空格
所以输入的时候只要在三个变量中间+空格就不会存在问题

scanf("%f%1s%f" ,&a , &x ,&b); 有问题。
%s是接收字符串控制符,而x是字符变量,是不能被赋给字符串的,应该为%c.而若是scanf("%f%c%f" ,&a , &x ,&b); 也有问题,假使输入 1.9空格m2.6 那么结果是:a==1.9 x==' ' b没被赋值。建议改为
:scanf