int a, b;
char c;
printf("请输入第一个操作数");
scanf_s("%d", &a);
printf("请输入第二个操作数");
scanf_s("%d", &b);
printf("请输入您的运算符");
scanf_s("%d", &c);
printf("%d", (c==43) ? (a+b) : (c==45) ? (a-b) : (c==42) ? (a*b) : a/b);
//我想做个简单的四则运算工具,这是作业,老师要求不能使用IF等其他函数,只能使用简单的,我这个算法也可以啊,但是总欠缺点什么,运行不了。
在scanf前加一个getcahr();
缺少括号,导致结合关系不对,应该是
printf("%d", (c=='+') ? (a+b) : ((c=='-') ? (a-b) : ((c=='*') ? (a*b) : a/b)));
不过可能老师的意思是让你用switch代替if。
你这个是编译错误,按F7编译后,下面会有error提示,双击下那个提示,就会定位到错误的代码行出,大概的错误原因,提示中也会给出的
你把scanf("%d", &c); 中的%d换成%s,且不能换成%c,这样的话 c 就可以输入+ - * /,
er你写的程序只能输入相应的ASCII码值,才能得到正确输出。
你这里变量a和b都是int类型,输出的也是%d进行控制,那么计算除法的结果就会有问题,再者,输入控制符号不应该是%d,应该是%c,并且应该在输入符号前进行输入缓冲区清理,可以使getchar(),在VC/VS上编译还可以用fflush(stdin)
用软件编译下,看哪错了
赞同楼上说的. 这个题用switch 做更简单. 或者你可以看看 后面的 异或 部分的知识. 也很简单,总之这道题的解法很多. 多看看,对你的思路有很大的帮助.
最后一句 看不出顺序 还有可能是连续输入几个数时 没有清除流的状态 C++连续分次输入时 会清除流状态 再使流有效 然后才可以下一次输入 不然出来的结果不是用户要求的那样 你可以试试