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

看看这个程序哪里错了?? 一次进行一重运算,输入表达式以逆波兰式输入,如要进行“4+2”的运算,就输入“42+”!(引号不算) #include<stdio.h> #include<stdlib.h> #define MAX 40 int *p,*tos,*bos; void push(int i); int pop(void); int main() { char s[3]; int j=0,a,b; p=(int *)malloc(MAX*sizeof(int)); if(!p) { printf("Allocation Failure\n"); exit(1); } bos=p; tos=p+MAX-1; printf("Four Function Calculator\n"); printf("Enter 'q' to quit\n"); printf(":"); gets(s); do{ switch(s[j]) { case'+': { a=pop(); b=pop(); printf("%d\n",b+a); push(b+a); break; } case'-': { a=pop(); b=pop(); printf("%d\n",b-a); push(b-a); break; } case'*': { a=pop(); b=pop(); printf("%d\n",b*a); push(b*a); break; } case'/': { a=pop(); b=pop(); if(a==0) { printf("Divide by 0.\n"); break; } printf("%d\n",b/a); push(b/a); break; } default: push(s[j]);break; } j++; }while(s[j]!='\0'&&j<3); a=pop(); printf("Current value on the stack:%d\n",a); return 0; }

void push(int i) { if(p>tos){ printf("Stack Full\n"); return; } *p=i; p++; } int pop(void) { p--; if(p<bos){ printf("Stack Underflow\n"); return 0; } return *p; }

2005-03-31 20:00
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
写得好乱,可读性不好!

为什么不按常规来写栈?

也许你认为这样写一般人看不懂,看不懂就是好东西?

2005-03-31 20:13
bouluo505
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2004-12-25
收藏
得分:0 

我自己已经改好了! #include<stdio.h> #include<stdlib.h> #define MAX 100 char *p,*tos,*bos; int push(int i); int pop(void); int main() { char s[80],a,b; p=(char *)malloc(MAX*sizeof(int)); if(!p) { printf("Allocation Failure\n"); exit(1); } bos=p; tos=p+MAX-1; printf("Four Function Calculator\n"); printf("Enter 'q' to quit\n"); do{ printf(":"); gets(s); switch(*s) { case'+': { a=pop(); b=pop(); printf("%d\n",b+a); push(b+a); break; } case'-': { a=pop(); b=pop(); printf("%d\n",b-a); push(b-a); break; } case'*': { a=pop(); b=pop(); printf("%d\n",b*a); push(b*a); break; } case'/': { a=pop(); b=pop(); if(a==0) { printf("Divide by 0.\n"); break; } printf("%d\n",b/a); push(b/a); break; } case'=': { a=pop(); push(a); printf("Current value on the stack:%d\n",a); } default: push(atoi(s));break; } }while(*s!='q'); return 0; }

int push(int i) { if(p>tos){ printf("Stack Full\n"); return 0; } *p=i; p++; return 1; } int pop(void) { p--; if(p<bos){ printf("Stack Underflow\n"); return 0; } return *p; }


好好学习,\"歼\"死小日本……
2005-04-04 13:09
快速回复:看看这个程序哪里错了??
数据加载中...
 
   



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

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