用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("\\-------------------/");
}
"-"的问题好了。。现在只剩下一些大数的运算有问题。。能再帮我看看吗? 谢谢!! 展开
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("\\-------------------/");
}
"-"的问题好了。。现在只剩下一些大数的运算有问题。。能再帮我看看吗? 谢谢!! 展开
6个回答
展开全部
编译运行没有问题,可以运算一些小一点的数据,前提是一定要输入你能识别的标识,不能出现其它符号,即:输入格式一定是合法的才可以!
程序存在的一些问题就是
一、缺少错误判断,非法字符没有处理。
二、算法执行次数的缺陷,你的if全没有else语句,造成程序运行效率较低!
如有其它问题,请直接明示
看你的补充:
scanf ("%f %c %f %c",&a,&operator1,&b,&operator2);
scanf ("%f %c",&c,&operator3);
在你的输入格式中加上空格!你发现没你的测试数据间是有空格的哦
程序存在的一些问题就是
一、缺少错误判断,非法字符没有处理。
二、算法执行次数的缺陷,你的if全没有else语句,造成程序运行效率较低!
如有其它问题,请直接明示
看你的补充:
scanf ("%f %c %f %c",&a,&operator1,&b,&operator2);
scanf ("%f %c",&c,&operator3);
在你的输入格式中加上空格!你发现没你的测试数据间是有空格的哦
更多追问追答
追问
那就是
%f %c之间加空格?
追答
是的,你修改后再提交看一下,有问题再追问,我前面给你写出来了,你照着修改一下试试,代码本身没有大问题。
展开全部
你在输入测试数据时请不要加上空格,直接输入 "1+2=" 就可以了。要是你输入了空格那么第一个运算符就会被认为是空格,然后后面都错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序正确啊!编译调试都通过了……如果是不显示结果就直接跳出的话你可以再最后一条语句后边加一条system("pause");在程序开头加#include <stdlib.h>这个头文件就可以了,还有把int i;可以删掉,程序中没有用到这个变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是程序在第一次输入3个数的时候不能正常得到结果,输入2个数的就正确?
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看懂程序要做什么了,不知道你的问题是什么,我编译也过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我试的两个或三个操作数都没问题.你把你出错的结果发一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询