| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:我又有问题了!!!
只看楼主 加入收藏
dimyself
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-10-18
收藏
 问题点数:0 回复次数:0 
我又有问题了!!!

还是那个计算器的问题,我加了点东西之后又出现一中情况,让我很不解

它是求类似表达式:S(S(256))+A(4,2)+C(4,2)+3/2-5+3!#的值的

S()表示求数的开方,A()求排列,C()求组合...

下面是程序的一部分:

void turn() //将表达式转换为后缀表达式并把它放入结构体exp[]中 { int i,j,k,t,top,num,temp,sum1,sum2,flag=1,n=1; float sum,su,tem; char expr[MAX],stack[10]; //expr[]用于存放初始表达式,stack[]做栈使用 link exp[50]; //结构体 i=0;k=0;t=0;top=1; printf("请输入要求值的表达式并以'#'结束:\n"); do { i++; scanf("%c",&expr[i]); }while(expr[i]!='#'&&i<=MAX); num=i; //num为字符个数 printf("原表达式为:\n"); for(i=1;i<=num;i++) //输出 printf("%c",expr[i]); printf("\n"); i=1; //第一个 while(expr[i]!='#') //循环 { switch(expr[i]) { case'S':sum=0.0;su=0.0;tem=0.1; i=i+2; if(expr[i]>='0'&&expr[i]<='9') { while(expr[i]>='0'&&expr[i]<='9') //整数部分 { sum=sum*10+expr[i]-48; i++; } //while end if(expr[i]=='.') { i++; while(expr[i]>='0'&&expr[i]<='9') //小数部分 { su=su+(expr[i]-48)*tem; tem=tem*(0.1); i++; } //while end } //if end i=i+n; sum=sum+su; exp[++k].value =operS(sum,n); //求值后把值放入结构体中 exp[k].charc[1]='#'; //结构体成员charc[5]第一个值置为'#' sum=0.0;su=0.0; //重新置值 break; } if(expr[i]=='S') //递归情况 { n++; //n记录递归次数 break; } if(expr[i]=='-') { printf("被开方数不能为负数,请重新输入!\n"); flag=0; expr[i]='#'; break; }

..............//未变

if(flag==1)//flag=1表示无错误情况发生 { t=1; while(exp[k].charc[t]!='#') { t++; } while(top>1) //把栈中剩下的符号放进exp[].charc[]中 exp[k].charc[t++]=stack[top--]; exp[k].charc[t]='#'; printf("转换成后缀表达式并放入表后的分布:\n"); for(i=1;i<=k;i++) printf("%10f",exp[i].value); printf("\n"); for(i=1;i<=k;i++) for(j=1;exp[i].charc[j]!='#'&&j<5;j++) if(exp[i].charc[j]=='+'||exp[i].charc[j]=='-'||exp[i].charc[j]=='*'||exp[i].charc[j]=='/') printf("%3c",exp[i].charc[j]); printf("\n");

}

}

为加粗部分是未做S()的递归情况及报错等情况的,没问题

但加了粗体部分后,程序就有问题了

程序每执行一条语句,top的值便会随着加1 ,导致后面的程序执行有误!

请问大家,这是什么原因呢???

2004-11-17 15:45
快速回复:我又有问题了!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016239 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved