计算器程序.运算不出结果

来源:百度知道 编辑:UC知道 时间:2024/06/14 08:29:12
下面是我的代码
我要求是输入公式...自动判断符号的优先级别 进行运算
例输入:1+2*3 会先计算2*3的结果 然后再加1
程序运算不出结果 连末尾的printf("答案:\n");也不输出了 那错了

#include "stdio.h"
#define CC 200
main()
{
char fh,xfh[50];//符号
int sz[50],a[20],b[20];//a:+- b:*/ sz:式子
int i,j,ja=0,jb=0,n=0;//n:判断运算是否结束
int xb;//调用

for(i=0;i<20;i++)
{
a[i]=CC;
b[i]=CC;
}
for(i=0;i<50;i++)
{
sz[i]=0;
xfh[i]=0;
}

printf("输入式子:\n");
for(i=1;xfh[i-1]!='\n';i++)//数字和符号分别存放
{
scanf("%d%c",&sz[i],&xfh[i]);
}

for(i=1;xfh[i]!='\n';i++)
{
fh=xfh[i];
if(fh<48||fh>57)
{
if(xfh[i]==43||xfh[i]==45)//+-
{
a[ja]=i;//保存符号在式子中的位置
ja++;
}
e

这个不算计算器了,应该算是编译原理上的小应用了,看你的代码,觉得有点迷茫,而且在我的工作中很少用数组了,就用stl中的vector帮你写了一个,它的作用跟数组差不多,你也学着用它吧,当然把它换成数组也是可以实现的。另外输入的时候还是加个try吧~
说下思路吧,就是先做高优先级的*/,把剩下的变量和+ -压栈,也就是另外存储,最后只剩加减法了,计算就容易了。其实明白这个就可以自定义运算了,都可以定义+ -的优先级别高于* /,就是先算它啦~
看别人的代码不如自己重写,我的毛病~测试了一下,没出错,希望对你有帮助,代码如下:
//----------------------------
//@Author 百度空间 radestor
//----------------------------
#include "stdio.h"
#include <vector>
#define SIZE 50 //表达式最大项数

using std::vector;

main()
{
vector<int> viVariables;//存储变量
vector<char> vcOperator;//存储运算符

viVariables.reserve(SIZE);//分配vector空间
vcOperator.reserve(SIZE);

printf("输入式子:\n");
int iSize = 0;//表达式的项数
try{
scanf("%d%c",&viVariables[0],&vcOperator[0]);
for(int i=1;vcOperator[i-1]!='\n';i++)//数字和符号分别存放
{
scanf("%d%c",&viVariables[i],&vcOperator[i