495个c语言问题题!!紧急!!!!

C语言常见问题集_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言常见问题集
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩175页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢本帖子已过去太久远了,不再提供回复功能。用c语言怎么做四则运算???急急急!!!
输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后程序计算得出结果为:359183
必须要用c语言啊!!!
你上面都是字符。你给出不同字符组合的规则,由此将其拆分为“单词”,根据某些“单词”决定另一些“单词”的计算方法,或 计算次序,由此形成 运行树。 最后就遍历这个运行树,根据不同“计算方法”节点的规则,把其对应的 计算数据 节点的数据 给计算出来。 哈。
给你个具体的方法,百度一下逆波兰表达式
递归下降分析: E = T 或 E+T 或 E-T T = F 或 T*F 或 T/F F = 数值 或 (E)
数据结构,编译原理里都有讲,使用运算符优先表写一个计算器
楼上几位都没有学过算法
不考虑空格、tab、单目加减以及格式错误,可以写一个特别简陋的递归下降分析模型
#include&stdio.h&
char *s=&123+213-67*34+345/23*45*(34+34-345+245+567)&;
int term();
int factor();
int expression()
t = term();
if(*s=='+') { s++; t = t + term(); }
else if(*s=='-') { s++; t = t - term(); }
int term()
f = factor();
if(*s=='*') { s++; f = f * factor(); }
else if(*s=='/') { s++; f = f / factor(); }
int factor()
if(*s=='(') {
f = expression();
if(*s==')') s++;
while('0'&=*s && *s&='9') {
f=f*10+(*s-'0');
void main()
printf(&%d\n&,expression());
--- 共有 2 条评论 ---
运行结果是359183
如果要再规范一些,还要写一些别的语句,比如读取输入
话说这是完整的答案吗?扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
c语言问题,急急急!关于链表的!题目是这样的:链表练习:求集合的差:假设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A-B。
提示:由集合运算的规则可知,集合的差A-B中包含所有属于集合A而不属于集合B的元素。具体做法是,对于集合A中的每个元素e,在集合B的链表LB中进行查找,若存在与e相同的元素,则从LA中将其删除
zoPR85HU73
扫二维码下载作业帮
1.75亿学生的选择
#include&&stdio.h&#include&&stdlib.h&typedef&struct&list{ int&//存数链表节点的元素值& struct&list&*//指向下一节点&}LIST;LIST&*createlist(int&n){ LIST&*head,*p,*p1; int&i; head=(LIST&*)malloc(sizeof(LIST)); p= scanf(&%d&,&(p-&elem)); p-&next=NULL; for(i=1;i&n;i++) {
p1=(LIST&*)malloc(sizeof(LIST));
scanf(&%d&,&(p1-&elem));
p1-&next=NULL;
p-&next=p1;
p=p1; } return& }&LIST&*A_B(LIST&*A,LIST&*B)//计算A-B,计算结果保存在A中{ LIST&*pa,*pa_prev,* int&e, pa=A; pa_prev=A; while(pa!=NULL)//遍历链表A中的每一个元素& {
pb=B;//对A中的每一个元素e,都从LB的表头开始查找
while(pb!=NULL)
if&(pb-&elem==e)&//若A中的元素B也有,则在A中删除该元素
if&(pa==A)&//pa是表头
pa_prev=pa-&
else&if(pa-&next==NULL)//pa是表尾&
pa_prev-&next=
else//非表头元素和表尾元素&
pa_prev-&next=pa-&
else&pb=pb-& &
if&(flag==0)&{pa_prev=pa=pa-&} } return&A;}&int&main(){ LIST&*LA,*LB; LIST&*p; int& printf(&请输入链表A的长度:&); scanf(&%d&,&num); printf(&请输入链表A的元素,中间用空格隔开:&); LA=createlist(num); printf(&\n请输入链表B的长度:&); scanf(&%d&,&num); printf(&请输入链表B的元素,中间用空格隔开:&); LB=createlist(num); LA=A_B(LA,LB);//计算集合差& p=LA;//输出A-B的结果& printf(&\nLA-LB=&); while(p!=NULL) {
printf(&%4d&,p-&elem);
p=p-& } return&0; printf(&\n&);}程序的运行结果:若满意,望采纳!
为您推荐:
扫描下载二维码

我要回帖

更多关于 495个c语言问题 的文章

 

随机推荐