描写美女眼睛的古文:用tc2.0编一程序,不带括号的四则运算器

来源:百度文库 编辑:高校问答 时间:2024/05/08 01:01:39
哪位高手帮帮忙!!!
从键盘输入一字符串存入字符数组,!!不带括号!!,只有加减乘除,计算其值,如输入不正确,给予出错提示.
如输入10+4/2+5*2
输出22
输入10+*20
输出"错误"
有优先级,乘除比加减高,只输入整数吧

#include "stdio.h"
#include "conio.h"

main()
{
char p[100];
char *c = p;
double n[50];
char op[50];
int i,j,op_num,n_num;

scanf("%s",c);

for(i=0;i<50;i++)
{
n[i] = 0;
}

if(*c<'0' || *c>'9')
{
printf("Err\n");
exit(0);
}

for(i=0;*c!='\0';c++)
{
if(*c>='0' && *c<='9')
{
n[i] = n[i]*10 + *c - '0';
continue;
}
if(*c == '+' || *c == '-' || *c == '*' || *c == '/')
{
if(*(c+1)<'0' || *(c+1)>'9')
{
printf("Err\n");
exit(0);
}
op[i++] = *c;
continue;
}
printf("Err\n");
exit(0);
}
op_num = i;
n_num = i+1;

for(i=0;i<op_num && op_num>0;)
{
if(op[i] == '*' || op[i] == '/')
{
if(op[i] == '*')
{
n[i] = n[i] * n[i+1];
}
else
{
n[i] = n[i] / n[i+1];
}
op_num--;
n_num--;
for(j=i;j<op_num;j++)
{
op[j] = op[j+1];
}
for(j=i+1;j<n_num;j++)
{
n[j] = n[j+1];
}
}
else
{
i++;
}
}

for(i=0;op_num>0;)
{
if(op[i] == '+')
{
n[i] = n[i] + n[i+1];
}
else
{
n[i] = n[i] - n[i+1];
}
op_num--;
n_num--;
for(j=i;j<op_num;j++)
{
op[j] = op[j+1];
}
for(j=i+1;j<n_num;j++)
{
n[j] = n[j+1];
}
}
printf("=%lf\n",n[0]);
getch();
}

先定义四个符号的算法
定义数组长度
1、循环读入,定义结束符
循环运算
输出
2、输入a[i],计算/等待a[i+1]
出现结束符
输出

不知道是不是只计算整数,如果也计算小数,那可麻烦多了啊