哪位大神给个网站你懂帮忙看看.刚入门.一直没弄明白

[C语言]哪位大神帮忙看看该程序的int EvaluateExpression(char inputs[])为什么会出现那样的问题,小弟不明白,望大神赐教,小弟将感激不敬,谢谢 - 代码贴 - BCCN
#include&stdio.h&
#include&stdlib.h&
#include&string.h&
#include&malloc.h&
#define MAX 100
typedef struct charnode
//定义一个结构体类型
char charstack;
//定义一个存放运算符的栈
struct charnode *next;
//定义一个指向栈顶的指针变量
}StackChar;
typedef struct datanode
//定义一个存放数据的栈
struct datanode *next;
//定义一个指向栈顶的指针变量
}StackData;
StackChar *operation;
//定义两个变量, 分别存储数字和运算符
StackData *data;
char Operations[7]={'+','-','*','/','(',')','#'};
//括号和运算符
StackChar *charInitstack();
//运算符栈的初始化栈
StackData *dataInitstack();
//数据栈的初始化栈
charPush(StackChar *top,char x );
//运算符进栈
dataPush(StackData *top,int x );
//运算符进栈
charPop(StackChar *top);
//运算符出栈
dataPop(StackData *top);
//数据出栈
charGetpop(StackChar *top);
//取运算符栈顶
dataGetpop(StackData *top);
//取数据栈顶
Precede(char a, char b);
//运算符优先级判断
int judgechar(char test);
//判断字符类型
int Operation(int a,char operationchar,int b);
int EvaluateExpression(char inputs[]);
int main()
int result;
char inputs[MAX];
printf(&请输入算式表达式&);
gets(inputs);
result=EvaluateExpression(inputs);
//调用表达式求值函数
printf(&结果为%d\n&,result);
StackChar *charInitstack()
//运算符栈的初始化栈
StackChar *strack;
strack=(StackChar *)malloc(sizeof(StackChar));
strack-&next=NULL;
return (strack);
StackData *dataInitstack()
//数据栈的初始化栈
StackData *strack;
strack=(StackData *)malloc(sizeof(StackData));
strack-&next=NULL;
return (strack);
charPush(StackChar *top,char x )
//运算符进栈
StackChar *p;
p=(StackChar *)malloc(sizeof(StackChar));
p-&charstack=x;
p-&next=top-&next;
top-&next=p;
dataPush(StackData *top,int x )
//操作数进栈
StackData *p;
p=(StackData *)malloc(sizeof(StackData));
p-&data=x;
p-&next=top-&next;
top-&next=p;
void charPop(StackChar *top)
//运算符出栈
StackChar *p;
if(top-&next==NULL)
printf(&栈已空,无法出栈&);
p=top-&next;
top-&next=p-&next;
void dataPop(StackData *top)
//数据出栈
StackData *p;
if(top-&next==NULL)
printf(&栈已空,无法出栈&);
p=top-&next;
top-&next=p-&next;
char charGetpop(StackChar *top)
//取运算符栈顶
if(top-&next==NULL)
printf(&栈空,不能取栈顶元素&);
x=top-&next-&charstack;
return(x);
dataGetpop(StackData *top)
//取数据栈顶
if(top-&next==NULL)
printf(&栈空,不能取栈顶元素&);
x=top-&next-&data;
return(x);
/*比较两个运算符的优先级
*a,b中存放待比较的运算符
*'&'表示a&b
*'0'表示不可能出现的比较
char Precede(char a, char b)
char pre[][7]={
/*运算符之间的优先级制作成一张表格*/
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','=',' '},
{'&','&','&','&',' ','&','&'},
{'&','&','&','&','&',' ','='}};
switch(a){
case '+': i=0; break;
case '-': i=1; break;
case '*': i=2; break;
case '/': i=3; break;
case '(': i=4; break;
case ')': i=5; break;
case '#': i=6; break;
switch(b){
case '+': j=0; break;
case '-': j=1; break;
case '*': j=2; break;
case '/': j=3; break;
case '(': j=4; break;
case ')': j=5; break;
case '#': j=6; break;
return pre[i][j];
//返回优先级
/*进行实际的运算
*a,b中分别以整数的形式存放两个待运算的操作数
*operationchar中存放代表操作符的字符
*结果以整数的形式返回
int Operation(int a,char operationchar,int b)
switch(operationchar)
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':return a/b;
default: return 0;
int judgechar(char test)
//判断字符类型
int find=1;
for(i=0;i&7;i++)
if(test==Operations[i])
return find;
int EvaluateExpression(char inputs[])
//保存数据
//保存获取下一个的字符
char x,oper;
//x保存栈顶元素
,oper保存运算符
int a,b,sum=0,i=0;
//临时变量,a、b 分别保存两个数据
data=dataInitstack(data);
//初始化数据栈
operation=charInitstack(operation);
//初始化一个运算符栈
charPush(operation,'#');
//插入一个'#'符
x=charGetpop(operation);
while(inputs[i]!='#'||x!='#')
if(judgechar(inputs[i]))
//如果返回的值为1,说明该字符为整数
sum=inputs[i]-'0';
while(judgechar(inputs[i++]))
sum=sum*10+(inputs[i++]-'0');
printf(&%d&,sum);
dataPush(data,sum);
//数据进栈
while(inputs[i++]==' ');
//跳过一个或多个空格
//获取的字符是运算符
x=charGetpop(operation);
//获取运算符栈的栈顶元素
switch(Precede(x, inputs[i]))
//比较两个运算符的优先级
case '&':
//栈顶元素优先级低
charPush(operation,inputs[i]);
//运算符进栈
while(inputs[i]==' ');
//获取下一个字符
case '=':
//脱括号并接受下一字符
charPop(operation);
while(inputs[i]==' ');
//获取下一个字符
case '&':
// 退栈并将运算结果入栈
oper=charGetpop(operation);
charPop(operation);
//运算符出栈
a=dataGetpop(data);
dataPop(data);
//数据出栈
b=dataGetpop(data);
dataPop(data);
//数据出栈
dataPush(data, Operation(a, oper, b));
//将两个数据运算后再进栈
while(inputs[i++]==' ');
//获取下一个字符
x=charGetpop(operation);
//获取运算符栈的栈顶元素
n=dataGetpop(data);
//获取数据栈的栈顶元素
printf(&%d&,n);哪位大神帮忙看看。刚入门。一直没弄明白。 - DSP论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
哪位大神帮忙看看。刚入门。一直没弄明白。
等待验证会员
10:52:32  
F28335库文件错误在编译程序过程中出现以下错误
undefined& && && && && && && && &first referenced
symbol& && && && && && && && && && &in file
---------& && && && && && && && &----------------
_InitXintf16Gpio& && && && && &&&C:\\tidcs\\c28\\DSP2833x\\v101\\DSP2833x_examples\\cpu_timer\\Debug\\Example_2833xCpuTimer.obj
_MemCopy& && && && && && && && & C:\\tidcs\\c28\\DSP2833x\\v101\\DSP2833x_examples\\cpu_timer\\Debug\\Example_2833xCpuTimer.obj
&&& &error: symbol referencing errors - './Debug/Example_2833xCpuTimer.out' not
& && && && &built
&& Compilation failure
Build Complete,
&&2 Errors, 1 Warnings, 0 Remarks.
我觉得是库文件选择不正确,可又不知道应该选哪个
哪位帮忙看下,谢谢
15:03:25  
好像是_InitXintf16Gpio&&_MemCopy&&没有定义?
11月注册新萌有奖哦
BUT!!“老”朋友不要看到这就走了!!!
小编这次不偏心新萌了
“老”司机们通过分享同样有奖哦
等不及了?快来加入吧!
美国高官内华达财政部长施瓦泽在接受新浪科技独家专访时,称“乐视是庞氏骗局”-庞氏骗局是对金融领域投资诈骗的称呼。乐视也是拆东墙补西墙,到处拢钱(借钱或要投资)。就和庞氏骗局模式相同。
Powered by一个关于引用的有关问题,以前一直误解,估计很多人也一直和小弟我的想法一样,直到现在也没真正弄明白,还请各位大神解惑,多谢了! - J2EE当前位置:& &&&一个关于引用的有关问题,以前一直误解,估计很多人一个关于引用的有关问题,以前一直误解,估计很多人也一直和小弟我的想法一样,直到现在也没真正弄明白,还请各位大神解惑,多谢了!&&网友分享于:&&浏览:0次一个关于引用的问题,以前一直误解,估计很多人也一直和我的想法一样,直到现在也没真正弄明白,还请各位大神解惑,谢谢了!!!package&zjj.util.
import&java.util.ArrayL
import&java.util.L
public&class&RefrenceObjectChange&{
public&static&void&main(String[]&args)&{
Person&person&=&new&RefrenceObjectChange.Person();
String&ea&=&person.getName();
ea.concat("bb");
System.out.println(person.getName());
List&String&&li&=&person.getList();
li.add("bb");
for&(String&string&:&li)&{
System.out.println(string);
static&class&Person
private&String&name&=&"aa";
private&List&String&&
public&String&getName()&{
public&void&setName(String&name)&{
this.name&=&
public&List&String&&getList()&{
if(list&==&null)
list&=&new&ArrayList&String&();
list.add("aa");
public&void&setList(List&String&&list)&{
this.list&=&
&为什么person.getName()&输出是aa,&&而person.getList()是aa,&bb&&&???
按道理来说List&String&&li&=&person.getList();中&li&只是对peron中list的一个拷贝,所以就算我修改li里面的值都应该对person里面的list的值没影响才对,&大神求解???------解决思路----------------------List&String&&li&=&person.getList();
这个并不是什么拷贝,而是和list一样指向了同一个对象...
你返回不正是list所指对象的引用么
再赋值不是拷贝对象,而只是赋指针值,即java的引用
------解决思路----------------------就是值类型与引用类型的问题。
简单得说值类型赋值就是你说的拷贝,两个变量毫无关系,随便改变哪一个另外一个不受影响
而引用类型,其实就是变量中保存的是一个对象的地址,而这个地址就是通往实际对象数据的“一条路”。。。
Person&a&=&new&Person();&Person&b&=&a;&比如a这个变量保存的地址是“重庆市渝北区”,b这个时候也是“重庆市渝北区”了~。
那么对于这两个变量的所有操作,都是通过地址找到真正的数据后进行修改的,他们同一个地址当然是修改同一数据了~
所有基本类型都是值类型,所有对象都是引用类型。&String是对象,他是引用类型,但具备值类型的特征,简单说你赋值的时候就把他看作值类型------解决思路----------------------person对象在堆内存中,你只new了1个,所以只有1个,你能引用到这个对象,那么修改的也是这个对象的属性!问题出在string这个类,这个类的对象可不是一般的对象!这个类是不可变的,他里面的值是不会变的,即&"aa"是一个对象,而&"aabb"是另外一个对象,你的person对象中name变量指向了"aa",
String ea = person.getName();此时ea也指向了"aa"对象,
ea.concat("bb");此时ea指向了"aabb"对象。注意!"aa"对象是不会改变的,他里面的值还是"aa"!!!ea的引用指向了其他对象,person对象还是指向原来的!!!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有是时候,换个姿势关注TA
关注 功能升级,收割 TA 的最新动态
扫我下载最新九游APP
查看: 1187|回复: 16
最后登录积分19421精华0帖子
Lv16炉火纯青, 经验 19421, 距离下一级还需 579 经验
穹武应该穿物理还是法术?还有他妹妹明明法术,我带物理装备一个定身就能秒人,带法术反而定身不疼了,他们2个应该怎么配装
最后登录积分4840精华0帖子
Lv9略有小成, 经验 4840, 距离下一级还需 160 经验
兄物理妹法术
最后登录积分13105精华0帖子
Lv14渐入佳境, 经验 13105, 距离下一级还需 495 经验
1物2仙的路过
最后登录积分45237精华25帖子
我也没弄明白~都是乱穿的
最后登录积分41181精华5帖子
我也搞不懂
最后登录积分19421精华0帖子
Lv16炉火纯青, 经验 19421, 距离下一级还需 579 经验
问题是穹武我物理的时候发现他的全体龙那招伤害好低,换成发素又打不掉血,有没有大神回答下
最后登录积分10426精华0帖子
Lv13渐入佳境, 经验 10426, 距离下一级还需 574 经验
。。。仙功的好不好& & 妹子雷球是法。撕咬是武的这个个人感觉都差不多加成不高他哥的话必须仙功的雷龙和雷鸣都是法的好不好。你带功有输出?
最后登录积分15527精华0帖子
Lv15炉火纯青, 经验 15527, 距离下一级还需 1073 经验
来自九游APP
最后登录积分37481精华3帖子
Lv20已臻大成, 经验 37481, 距离下一级还需 2519 经验
友友,我觉得哪件装备伤害高就穿哪件,不是吗?
最后登录积分19421精华0帖子
Lv16炉火纯青, 经验 19421, 距离下一级还需 579 经验
就是因为这样穹武才让我不明白,带仙功技能没多大多少学,反而普通攻击比物理武器一下少1000多
参加梦幻西游论坛活动获得(有效期:30天)
参加论坛活动获得(有效期:30天)
成为版主并参与协助论坛版主评优工作
金牌优秀版主
每月版主评优分数达到金牌版主标准授予(有效期:30天)
每周积极版主表彰,评分组巡版每周评定(有效期:14天)
在乐动音符版块发布自唱歌曲超过5首可向版主申请勋章
通过论坛学生认证,鉴定为学生身份的友友(有效期:长期)
通过论坛男生认证,鉴定为男生身份的友友(有效期:长期)
安卓平台下载
苹果平台下载后使用快捷导航没有帐号?
只需一步,快速开始
查看: 181|回复: 6
在线时间0 小时经验值4 最后登录注册时间帖子阅读权限10UID
幼儿园, 积分 4, 距离下一级还需 11 积分
该用户从未签到
G币6 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
最近入手一款韩国小三3G版的,1GRAM16GR0M,请问可以刷那个版本的包,有没有专属它自己的包
在线时间203 小时经验值782 最后登录注册时间帖子阅读权限70UID
学士, 积分 782, 距离下一级还需 318 积分
该用户从未签到
G币184 最后登录注册时间
泪流满面,顶楼主!
在线时间23 小时经验值43 最后登录注册时间帖子阅读权限20UID
小学生, 积分 43, 距离下一级还需 7 积分
该用户从未签到
G币10 最后登录注册时间
(*^__^*)别说我没有顶贴啊,我来顶贴了啊,楼主……
在线时间19 小时经验值127 最后登录注册时间帖子阅读权限1UID
头像被屏蔽
该用户从未签到
G币10 最后登录注册时间
提示: 作者被禁止或删除 内容自动屏蔽
在线时间0 小时经验值1208 最后登录注册时间帖子阅读权限1UID
头像被屏蔽
该用户从未签到
G币0 最后登录注册时间
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
在线时间0 小时经验值220 最后登录注册时间帖子阅读权限50UID
大学专科, 积分 220, 距离下一级还需 180 积分
该用户从未签到
G币0 最后登录注册时间
非常高兴遇到这么好的帖子 谢谢
在线时间0 小时经验值-1 最后登录注册时间帖子阅读权限10UID
该用户从未签到
G币0 最后登录注册时间
以后需再关注,现在先帮你顶一下
,,,/longhua,,,,,/longhua,/futiananli,,/pianqu/,,,
Powered by}

我要回帖

更多关于 大神帮忙ps 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信