论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

简易的四则运算

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:43:34

这个程序自己写的有些局限,可惜只能对0~9的四则运算起作用,我正在对它进行改进,希望各位能提出好的意见,谢谢!!
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
#define maxism 15
typedef struct stack
{
char stack[maxism];
int top;
}stack;
stack *L;
char after[maxism];
void initialstack(stack *T)
{
T->top=0;
}
void push(stack *T,int x)
{
T->top++;
T->stack[L->top]=x;
}
void change()
{
int i=0,j,m=0;
char str[maxism],ch;
printf("please enter the compute expression(only contained +,-,*,/,(,),begin and end with '#'):\n");
gets(str);
i++;
ch=str[i];
initialstack(L);
while(ch!='#')
{
    switch(ch)
    {
        case'(':
           L->top++;
           L->stack[L->top]=ch;
           break;
        case')':
           while(L->stack[L->top]!='(')
           {
              after[m]=L->stack[L->top];
              L->top--;
              m++;
           }
           L->top--;
           break;
        case'+':
        case'-':
           while(L->top!=0&&L->stack[L->top]!='(')
           {
              after[m]=L->stack[L->top];
              L->top--;
              m++;
           }
           L->top++;
           L->stack[L->top]=ch;
           break;
        case'*':
        case'/':
           while(L->stack[L->top]=='*'||L->stack[L->top]=='/')
           {
              after[m]=L->stack[L->top];
              L->top--;
              m++;
           }
           L->top++;
           L->stack[L->top]=ch;
           break;
        case' ':
           break;
        default:
           if(ch>='0'&&ch<='9')
           {
              after[m]=ch;
              m++;
           }
           else
           {
              printf("error!\n");
              exit(1);
           }
     }
     i++;
     ch=str[i];
  }
while(L->stack[L->top]!=0)
{
after[m]=L->stack[L->top];
m++;
L->top--;
}
printf("the changed expression is:\n");
for(j=0;j<m;j++)
printf("%c",after[j]);
after[m]='#';
printf("%c",after[m]);
}
void  compute(stack *L)
{
int i=0,result,d;
char ch;
initialstack(L);
ch=after[i];
while(ch!='#')
{
    while(ch>='0'&&ch<='9')
    {
       d=ch-'0';
       push(L,d);
       i++;
       ch=after[i];
    }
    switch(ch)
    {
       case'+':
          L->stack[L->top-1]=L->stack[L->top]+L->stack[L->top-1];
          L->top--;
          break;
          case'-':
          L->stack[L->top-1]=L->stack[L->top-1]-L->stack[L->top];
          L->top--;
          break;
      case'*':
          L->stack[L->top-1]=L->stack[L->top]*L->stack[L->top-1];
          L->top--;
          break;
      case'/':
          if(L->stack[L->top-1]==0)
          {
              printf("error due to the wrong input format!\n");
              exit(0);
          }
          else
             L->stack[L->top-1]=L->stack[L->top-1]/L->stack[L->top];
          L->top--;
          break;
                                    default:
                                                      break;
                                     }
            i++;
            ch=after[i];
     }
printf("\n the final result is:%d",L->stack[L->top]);
}
main()
{int result;
clrscr();
change();
compute(L);
}

上一篇:{实例}制作多样的椭圆 人气:5585
下一篇:{实例}哪一个奴隶不会死 人气:4447
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058