用c语言求2个或3个数四则运算结果,不知道问题出在哪里..求高手解答!!

#include<stdio.h>voidmain(){inti;floatanswer,a,b,c;charoperator1,operator2,operator3;... #include <stdio.h>
void main ()
{
int i;
float answer,a,b,c;
char operator1,operator2,operator3;
printf ("Please input the formula:\n");
scanf ("%f%c%f%c",&a,&operator1,&b,&operator2);
if (operator2 == '=') // there are 2 operators in the formula
{
if (operator1 == '+')
answer=a+b;
if (operator1 == '-')
answer=a-b;
if (operator1 == '*')
answer=a*b;
if (operator1 == '/')
answer=a/b;
}
else //there are 3 operators in the formula
{
scanf ("%f%c",&c,&operator3);
if (operator2 == '*')
{
if (operator1 == '+')
answer=a+b*c;
if (operator1 == '-')
answer=a-b*c;
if (operator1 == '*')
answer=a*b*c;
if (operator1 == '/')
answer=a/b*c;
}
if (operator2 == '/')
{
if (operator1 == '+')
answer=a+b/c;
if (operator1 == '-')
answer=a-b/c;
if (operator1 == '*')
answer=a*b/c;
if (operator1 == '/')
answer=(a/b)/c;
}
if (operator2 == '+')
{
if (operator1 == '+')
answer=a+b+c;
if (operator1 == '-')
answer=a-b+c;
if (operator1 == '*')
answer=a*b+c;
if (operator1 == '/')
answer=a/b+c;
}
if (operator2 == '-')
{
if (operator1 == '+')
answer=a+b-c;
if (operator1 == '-')
answer=a-b-c;
if (operator1 == '*')
answer=a*b-c;
if (operator1 == '/')
answer=a/b-c;
}
}
printf("/--------------------\\\n");
printf("| The answer is %.2f |\n ", answer);
printf("\\-------------------/");
}
"-"的问题好了。。现在只剩下一些大数的运算有问题。。能再帮我看看吗? 谢谢!!
展开
 我来答
kaixingui2012
2012-10-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6457万
展开全部
编译运行没有问题,可以运算一些小一点的数据,前提是一定要输入你能识别的标识,不能出现其它符号,即:输入格式一定是合法的才可以!
程序存在的一些问题就是
一、缺少错误判断,非法字符没有处理。
二、算法执行次数的缺陷,你的if全没有else语句,造成程序运行效率较低!
如有其它问题,请直接明示
看你的补充:
scanf ("%f %c %f %c",&a,&operator1,&b,&operator2);

scanf ("%f %c",&c,&operator3);

在你的输入格式中加上空格!你发现没你的测试数据间是有空格的哦
更多追问追答
追问
那就是 
%f %c之间加空格?
追答
是的,你修改后再提交看一下,有问题再追问,我前面给你写出来了,你照着修改一下试试,代码本身没有大问题。
冷明珠05v
2012-10-14 · TA获得超过1503个赞
知道小有建树答主
回答量:389
采纳率:100%
帮助的人:547万
展开全部
你在输入测试数据时请不要加上空格,直接输入 "1+2=" 就可以了。要是你输入了空格那么第一个运算符就会被认为是空格,然后后面都错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶孤冰彦8H
2012-10-14 · 超过35用户采纳过TA的回答
知道答主
回答量:139
采纳率:0%
帮助的人:70.1万
展开全部
这个程序正确啊!编译调试都通过了……如果是不显示结果就直接跳出的话你可以再最后一条语句后边加一条system("pause");在程序开头加#include <stdlib.h>这个头文件就可以了,还有把int i;可以删掉,程序中没有用到这个变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mazdf
2012-10-14
知道答主
回答量:40
采纳率:0%
帮助的人:21.1万
展开全部
是不是程序在第一次输入3个数的时候不能正常得到结果,输入2个数的就正确?
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凌晨两点三十酱
2012-10-14 · TA获得超过169个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:148万
展开全部
看懂程序要做什么了,不知道你的问题是什么,我编译也过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逆流001
2012-10-14
知道答主
回答量:33
采纳率:0%
帮助的人:12.7万
展开全部
我试的两个或三个操作数都没问题.你把你出错的结果发一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式