编写一个程序,可以计算算术表达式的值,对非法表达式要给出提示,并要求重新输入正确的表达式.(正确的表达式范例:123+45*6-78/9 或 (123+45)*(6-78)/9 等等)题目要求:(1) 能正确计算出正确表

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/15 14:13:40

编写一个程序,可以计算算术表达式的值,对非法表达式要给出提示,并要求重新输入正确的表达式.
(正确的表达式范例:123+45*6-78/9 或 (123+45)*(6-78)/9 等等)题目要求:(1) 能正确计算出正确表达式的值.(2) 要考虑表达式中的优先级.相关知识:(1) 函数(2) 结构这个程序能不能给我也发一份

对非法表达式的判断你再自己加些,
#include "stdio.h"
#include "stdlib.h"
int INITSIZE = 20;
int ADDSIZE = 10;
/*
用一个堆栈存储数据,用一个堆栈存储符合(预存一个'#').
读到数据时入栈,读到运算符A是判断其优先级与栈定的运算
符B高低,若A高则A入栈,若A低则取出B,取出两栈定数据,进行运算,再A入栈.
输入格式:3-8*(2-7)=
*/
struct stackData {
\x05float *top;
\x05float *bottom;
\x05float *data;
\x05int size;
};
struct stackFlag {
\x05char *top;
\x05char *bottom;
\x05char *data;
\x05int size;
};
void initStackData(struct stackData *st)
{
\x05float *p=(float*) malloc( (sizeof(float) * INITSIZE));
\x05if(p!=NULL)
\x05{
\x05\x05st->data=p;
\x05\x05st->size=INITSIZE;
\x05}
\x05else
\x05\x05exit(1);
\x05st->top=st->data;
\x05st->bottom=st->data;
}
void pushData(struct stackData *st,float element)
{
\x05float *p;
\x05if((st->top-st->bottom)>=st->size)
\x05{
\x05\x05p=(float*)realloc(st->data ,(((st->size+ADDSIZE)*sizeof(float)) ));
\x05\x05if(p!=NULL)
\x05\x05{
\x05\x05\x05st->data=p;
\x05\x05\x05st->size +=ADDSIZE;
\x05\x05}
\x05\x05else
\x05\x05\x05exit(0);
\x05}
\x05*((st->top)++) = element;
}
float popData(struct stackData *st)
{
\x05if(st->top==st->bottom)
\x05\x05return -1;
\x05return *(--(st->top));
}
float getData(struct stackData *st)
{
\x05if(st->top==st->bottom)
\x05\x05return -1;
\x05return *(st->top-1);
}
void destoryStackData(struct stackData *st)
{
\x05if(st->data!=NULL)
\x05\x05free(st->data);
}
void initStackFlag(struct stackFlag *st)
{
\x05char *p=(char*)malloc(INITSIZE*sizeof(char));
\x05if(p!=NULL)
\x05{
\x05\x05st->data=p;
\x05\x05st->size=INITSIZE;
\x05}
\x05else
\x05\x05exit(1);
\x05st->top=st->data;
\x05st->bottom=st->data;
}
void pushFlag(struct stackFlag *st,char element)
{
\x05char *p;
\x05if((st->top-st->bottom)>=st->size)
\x05{
\x05\x05p=(char*)realloc(st->data,(st->size+ADDSIZE)*sizeof(char));
\x05\x05if(p!=NULL)
\x05\x05{
\x05\x05\x05st->data=p;
\x05\x05\x05st->size +=ADDSIZE;
\x05\x05}
\x05\x05else
\x05\x05\x05exit(0);
\x05}
\x05*((st->top)++) = element;
}
char popFlag(struct stackFlag *st)
{
\x05if(st->top==st->bottom)
\x05\x05return -1;
\x05return *(--(st->top));
}
char getFlag(struct stackFlag *st)
{
\x05if(st->top==st->bottom)
\x05\x05return -1;
\x05return *(st->top-1);
}
void destoryStackFlag(struct stackFlag *st)
{
\x05if(st->data!=NULL)
\x05\x05free(st->data);
}
int flagLevel(char flag)
{
\x05switch(flag)
\x05{
\x05case '#':
\x05\x05return 0;
\x05\x05break;
\x05case '(':
\x05\x05return\x054;
\x05\x05break;
\x05case ')':
\x05\x05return 3;
\x05\x05break;
\x05case '+':
\x05case '-':
\x05\x05return 1;
\x05\x05break;
\x05case '*':
\x05case '/':
\x05\x05return 2;
\x05\x05break;
\x05default :return -1;
\x05};
}
float compute(float num1,float num2,char flag)
{
\x05switch(flag)
\x05{
\x05case '*':
//\x05\x05printf("%f*%f=%f\n",num1,num2,num1*num2);
\x05\x05return num1*num2;
\x05\x05break;
\x05case '/':
//\x05\x05printf("%f/%f=%f\n",num1,num2,num1/num2);
\x05\x05if(num2 == 0)
\x05\x05{
\x05\x05\x05printf("除数为零");
\x05\x05\x05exit(0);
\x05\x05}
\x05\x05return num1/num2;
\x05\x05break;
\x05case '+':
//\x05\x05printf("%f+%f=%f\n",num1,num2,num1+num2);
\x05\x05return num1+num2;
\x05\x05break;
\x05case '-':
//\x05\x05printf("%f-%f=%f\n",num1,num2,num1-num2);
\x05\x05return num1-num2;
\x05\x05break;
\x05default :return 0;
\x05};
}
int check(char *str)
{
\x05char a = *(str++);
\x05if(a != '(' && !('0'

用c++编写 计算表达式的值 对于给定的一个表达式,表达式中可以包括常数、算术运行符(“+”、“-”、“*”、“/”)和括号,编写程序计算表达式的值.基本要求:从键盘输入一个正确的中 编写一个程序实现求解任意算术表达式的值 4.计算表达式的值求用C++类做的代码对于给定的一个表达式,表达式中可以包括常数、算术运行符(“+”、“-”、“*”、“/”)和括号,编写程序计算表达式的值.基本要求:从键盘输入一个 编写一个程序,可以计算算术表达式的值,对非法表达式要给出提示,并要求重新输入正确的表达式.(正确的表达式范例:123+45*6-78/9 或 (123+45)*(6-78)/9 等等)(1) 能正确计算出正确表达式的值.(2) 编写一个程序,可以计算算术表达式的值,对非法表达式要给出提示,并要求重新输入正确的表达式(正确的表达式范例:123+45*6-789或(123 45)*(6-78)/9等等)(1)能正确计算出正确表达式的 编写一个程序,可以计算算术表达式的值,对非法表达式要给出提示,并要求重新输入正确的表达式.(正确的表达式范例:123+45*6-78/9 或 (123+45)*(6-78)/9 等等)题目要求:(1) 能正确计算出正确表 试用汇编语言编写计算表达式b*b-4ac的程序~急试用汇编语言编写计算表达式b*b-4ac的程序就是这样的一个题目~ 5.编写程序,设a=2,b=3,x=3.5,y=2.5计算并输出算术表达式(float)(a+b)/2+(int)x%(4. 编写程序,设x=2.5,a=7,y=4.7计算并输出算术表达式x+a%3*(x+y)%2/4的值. 求一程序:用C语言编写,要求如下:实验内容:(1) 判断一个算术表达式中开括号和闭括号是否配对.(2) 假设算术表达式仅由加减乘除运算符组成,编写一个函数对用后缀表达式表示的算 C语言版数据结构课程设计利用栈求表达式的值编写程序实现表达式求职,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值.主要功能叙述如下:1.从键盘上输入表达式.2.分析该表 利用栈求表达式的值要求完成以下功能:编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值.主要功能描述如下:1)从键盘上输入表达式.2)分析该表达 JAVA语言计算表达式的结果用java语言编写一个程序,输入表达式,结算表达式的结果,其中表达式中有括号 C语言程序编写 计算表达式 1 + 2 + 3 + . + 100的值. 10.试编写程序,对任意输入的一个算术表达式,将式中的数字和运算符分成两类(一类是数字,一类是运算符)c语言,程序代码? 设计一个表达式编写一个程序,并根据其结果说明算术运算、赋值运算、关系运算、逻辑运算之间的优先级别. 已知:a=2,b=3,x=3.9,y=2.3,计算算术表达式(float)(a+b)/2+(int)x%(int )y的值要求用C语言来编写程序 算术表达式求值算法?用C语言版 编写一个表达式求值演算的 算法程序 要求:使用栈,需要将算法的过程显示出来 ,输入一连串算术值 如:2*(3+2)# 然后 显示出算术过程 和结果!先将输入的 编写程序:定义一个整型的变量a,初值为12,计算表达式:a+=a-=a*a的值,并输出结果