慕容翰林吧 关注:7贴子:399
  • 14回复贴,共1

【备份】计算器

取消只看楼主收藏回复

图形界面


IP属地:浙江1楼2006-06-09 21:07回复
    #include <graphics.h>
    #include <conio.h>
    main()
    { void drawkey(int,int); /*画键声明*/
     /*图形初始化*/
     int driver,mode,x,y,x1,y1;
     driver=VGA;
     mode=VGAHI;
     registerbgidriver(EGAVGA_driver);
     initgraph(&driver,&mode,"c:\\turboc2");
     /*方框填充画计算器外体*/
     x=(getmaxx()/2)-150;
     y=(getmaxy()/2)-120;
     x1=(getmaxx()/2)+150;
     y1=(getmaxy()/2)+120;
     setfillstyle(SOLID_FILL,7);
     bar(x,y,x1,y1);
     /*画标题栏*/
     setfillstyle(SOLID_FILL,1);
     bar(x,y,x1,y+15);
     outtextxy(x+12,y+5,"SB COUNTER");
     setfillstyle(SOLID_FILL,4);
     bar(x1-15,y,x1,y+15);
     setcolor(0);
     line(x1-15,y,x1,y+15);
     line(x1,y,x1-15,y+15);
     /*画输出窗口*/
     setfillstyle(SOLID_FILL,15);
     bar(175,142,425+40,142+20);
     /*画键*/
     settextstyle(2,0,6);
     drawkey(175,200);
     outtextxy(175+17,200+5,"7");
     drawkey(175,240);
     outtextxy(175+17,240+5,"4");
     drawkey(175,280);
     outtextxy(175+17,280+5,"1");
     drawkey(175,320);
     outtextxy(175+17,320+5,"0");
     drawkey(225,200);
     outtextxy(225+17,200+5,"8");
     drawkey(225,240);
     outtextxy(225+17,240+5,"5");
     drawkey(225,280);
     outtextxy(225+17,280+5,"2");
     drawkey(225,320);
     outtextxy(225+17,320+5,".");
     drawkey(275,200);
     outtextxy(275+17,200+5,"9");
     drawkey(275,240);
     outtextxy(275+17,240+5,"6");
     drawkey(275,280);
     outtextxy(275+17,280+5,"3");
     drawkey(275,320);
     outtextxy(275+17,320+5,"=");
     drawkey(325,200);
     outtextxy(325+17,200+5,"+");
     drawkey(325,240);
     outtextxy(325+17,240+5,"-");
     drawkey(325,280);
     outtextxy(325+17,280+5,"*");
     drawkey(325,320);
     outtextxy(325+17,320+5,"/");
     drawkey(375,200);
     outtextxy(375+7,200+5,"+/-");
     drawkey(375,240);
     outtextxy(375+9,240+5,"sin");
     drawkey(375,280);
     outtextxy(375+13,280+5,"ln");
     drawkey(375,320);
     outtextxy(375+3,320+5,"sqrt");
     drawkey(425,200);
     outtextxy(425+17,200+5,"C");
     drawkey(425,240);
     outtextxy(425+9,240+5,"cos");
     drawkey(425,280);
     outtextxy(425+14,280+5,"lg");
     drawkey(425,320);
     outtextxy(425+7,320+5,"pow");
     bar(175,190-20,275+40,190);
     outtextxy(175+20,190-20,"space-key");
     bar(325,190-20,425+40,190);
     outtextxy(325+30,190-20,"backspace");

    }
    void drawkey(int x,int y) /*画键函数*/
    { int x1,y1;
     x1=x+40;
     y1=y+30;
     setfillstyle(SOLID_FILL,12);
     bar(x,y,x1,y1);
    }


    IP属地:浙江2楼2006-06-09 21:09
    回复
      鼠标


      IP属地:浙江3楼2006-06-09 21:10
      回复
        #include <graphics.h>
        #include <bios.h>
        #include <conio.h>
        #include <dos.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <malloc.h>
        #include <string.h>
        int ams,mx,my,keys;
        int A=16,B=16,K=0;
        int *x=&A,*y=&B,*key=&K;
        void getmouse(int *x,int *y,int *key) /*获取鼠标位置和按键*/
        {
         union REGS inregs,outregs;
         inregs.x.ax=3; /*获取鼠标位置和状态也可以用3*/
         int86(0x33,&inregs,&outregs); /*中断调用*/
         *x=outregs.x.cx; /*cx寄存器中存的是横坐标*/
         *y=outregs.x.dx; /*dx寄存器中存的是列坐标*/
         *key=outregs.x.bx; /*bx寄存器是按键状态*/
        }

        void drawmouse(int A,int B)/*画鼠标*/
        {
        setcolor(15);
        line(A+2,B+3,A+2,B+14);
        line(A+3,B+4,A+3,B+13);
        line(A+4,B+5,A+4,B+12);
        line(A+5,B+6,A+5,B+14);
        line(A+6,B+7,A+6,B+16);
        line(A+7,B+8,A+7,B+18);
        line(A+8,B+9,A+8,B+18);
        line(A+9,B+10,A+9,B+17);
        setcolor(0);
        line(A,B,A,B+18);
        line(A+1,B,A+1,B+17);
        line(A,B,A+12,B+12);
        line(A+1,B,A+13,B+12);
        line(A,B+18,A+4,B+14);
        line(A,B+17,A+4,B+13);
        line(A+4,B+14,A+6,B+20);
        line(A+4,B+13,A+6,B+19);
        line(A+6,B+20,A+10,B+18);
        line(A+6,B+19,A+10,B+17);
        line(A+10,B+18,A+8,B+12);
        line(A+10,B+17,A+8,B+11);
        line(A+8,B+12,A+12,B+12);
        line(A+8,B+11,A+12,B+11);
        }

        void showmouse() /*中断显示鼠标*/
        {
         union REGS inregs,outregs;
         inregs.x.ax=0x01; /*显示鼠标*/
         int86(0x33,&inregs,&outregs);
        }

        int mouse(int *mx,int *my,int *key,int n) /*画鼠标是利用将一个空矩形存入内存中,然后再在该空矩形中画鼠标形状*/
        {
         int a=0,b=0,c=n,a_old=0,b_old=0; /*a,b的值可以随便*/
         int *ball; /*定义指向内存的存储图形的指针*/
         ball=malloc(imagesize(a,b,a+15,b+25)); /*返回矩形的大小*/
         getimage(a,b,a+15,b+25,ball); /*第一次将图形(一个空矩形)存入到内存中,内存中存入的是一个空矩形*/


         while(c==n) /*直到按键后才返回,不按键一直循环*/
         {
         if(kbhit())
        {
         putimage(a,b,ball,0);
         free(ball);
         return getch();
        }
         getmouse(&a,&b,&c); /*a,为横坐标,b,为列坐标,c为按键状态*/
         if(a<0) a=0; /*保证鼠标左边不出界*/
         if(b<0) b=0; /*保证上面不出界*/
         if(a>getmaxx()-15) a=getmaxx()-15; /*保证右边不出界*/
         if(b>getmaxy()-25) b=getmaxy()-25; /*保证下边不出界*/
         if(a!=a_old || b!=b_old) /*当鼠标移动时*/
         {
         putimage(a_old,b_old,ball,0); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
         getimage(a,b,a+15,b+25,ball); /*这条语句是将目前鼠标所在位置的图形存贮到ball里面试着看着有无这条语句的区别*/
         /*不需要在获取了*/
         drawmouse(a,b);
         /*画鼠标*/
         }
         a_old=a;b_old=b;
         } /*while()结束*/
         *mx=a;*my=b;*key=c; /*返回按键后鼠标的位置*/
         putimage(a,b,ball,0); /*将鼠标擦掉,因为存在ball里面的是一个背景为缺省状态下的一个空矩形*/
         free(ball);
         return -1;
        }

        main()
        {
         int mode=VGAHI,devices=VGA;
         initgraph(&devices,&mode,"C:\\turboc2");/*图型模式初始化*/

         begin:
         showmouse();
         ams=mouse(&mx,&my,&keys,0);
        }


        IP属地:浙江5楼2006-06-09 21:10
        回复
          计算方式:逆波


          IP属地:浙江6楼2006-06-09 21:11
          回复
            #include <stdio.h>
            #include <math.h>
            #include <ctype.h>
            #define MAX 100
            #define NUMBER '0'
            #define SIZE 100
            char buf[SIZE];
            int p=0;

            void main()
            {
             int get(char s[]);
             void push(double);
             double pop();
             int getch();
             int sign;
             double t;
             char s[MAX];
             while ((sign=get(s))!=EOF) /*输入"ctrl+z"程序结束*/ 
             {
             switch (sign) 
             {
             case NUMBER:
             push(atof(s));
             break;
             case '+':
             push(pop()+pop());
             break;
             case '*':
             push(pop()*pop());
             break;
             case '-':
             t=pop();
             push(pop()-t);
             break;
             case '/':
             t=pop();
             if(t!=0.0)
             push(pop()/t);
             else
             printf("error:zero divisor\n");
             break;
             case 'f':
             push(-atof(s));
             break;
             case 'S':
             t=pop();
             if(t>=0)
             push(sqrt(t));
             else
             printf("error!");
             break;
             case 'P':
             t=pop();
             push(pow(pop(),t));
             break;
             case 's':
             t=pop();
             push(sin(t));
             break;
             case 'c':
             t=pop();
             push(cos(t));
             break;
             case 'L':
             t=pop();
             if(t>0)
             push(log10(t));
             else
             printf("error!");
             break;
             case 'l':
             t=pop();
             if(t>0)
             push(log10(t));
             else
             printf("error!");
             push(log(t));
             break;
             case '\n': /*回车表示此次运算结束*/
             printf("\t%.8g\n",pop());
             break;

             default:
             printf("error:unknown command %s\n",s);
             break;
             }
             }
            }

            int get(char s[]) /*获取运算分量*/
            {
             int i,c;
             s[0]=c=getch();
             while (c==' '||c=='\t')
             s[0]=c=getch();
             if(!isdigit©&&c!='.'&&c!='f')
             return c;
             i=0;
             if(c=='f') /*对负数进行判断,f表示负数*/
             {
             while (isdigit(s[i]=c=getch()))
             i++;
             if (c=='.')
             while (isdigit(s[i]=c=getch()))
             i++;
             s[i]='\0';
             return 'f';
             }
             if(isdigit©) /*对后面的字符进行判断,是数字则存入数组*/
             while (isdigit(s[i+1]=c=getch()))
             i++;
             if (c=='.') /*将小数点后的数字存入数组*/
             while (isdigit(s[i+1]=c=getch()))
             i++;
             s[i+1]='\0';
             return NUMBER;
            }

            int getch() /*读入字符*/
            {
             return(p>0)?buf[--p]:getchar();
            }

            #define MAX1 100
            int m=0;
            double val[MAX1];

            void push(double f) /*入栈操作*/
            {
             if (m<MAX1)
             val[m++]=f;
             else
             printf("error:strack full,can't push %g\n",f);
            }

            double pop() /*出栈操作*/
            {
             if (m>0)
             return val[--m];
             else 
             {
             printf("error:stack empty\n");
             return 0;
             }
            }


            IP属地:浙江7楼2006-06-09 21:12
            回复
              已经全部完成了,最后修正版留此备份,方便提取


              IP属地:浙江13楼2006-06-22 00:39
              回复
                代码如下


                IP属地:浙江14楼2006-06-22 00:40
                回复
                  #include <stdio.h>
                  #include <math.h>
                  #include <ctype.h>
                  #include <graphics.h>
                  #include <conio.h>
                  #include <dos.h>
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <malloc.h>
                  #define DELAYTIME 10000
                  #define NUMDIS 8
                  #define MAX 100
                  #define NUMBER '0'
                  int flag=0;
                  char fun[MAX];
                  int ams,mx,my,keys;
                  int A=16,B=16,K=0;
                  int *x=&A,*y=&B,*key=&K;
                  char value;
                  void getmouse(int *x,int *y,int *key) /*获取鼠标位置和按键*/
                  {
                   union REGS inregs,outregs;
                   inregs.x.ax=3; /*获取鼠标位置和状态也可以用3*/
                   int86(0x33,&inregs,&outregs); /*中断调用*/
                   *x=outregs.x.cx; /*cx寄存器中存的是横坐标*/
                   *y=outregs.x.dx; /*dx寄存器中存的是列坐标*/
                   *key=outregs.x.bx; /*bx寄存器是按键状态*/
                  }

                  void drawmouse(int A,int B)/*画鼠标*/
                  {
                  setcolor(15);
                  line(A+2,B+3,A+2,B+14);
                  line(A+3,B+4,A+3,B+13);
                  line(A+4,B+5,A+4,B+12);
                  line(A+5,B+6,A+5,B+14);
                  line(A+6,B+7,A+6,B+16);
                  line(A+7,B+8,A+7,B+18);
                  line(A+8,B+9,A+8,B+18);
                  line(A+9,B+10,A+9,B+17);
                  setcolor(0);
                  line(A,B,A,B+18);
                  line(A+1,B,A+1,B+17);
                  line(A,B,A+12,B+12);
                  line(A+1,B,A+13,B+12);
                  line(A,B+18,A+4,B+14);
                  line(A,B+17,A+4,B+13);
                  line(A+4,B+14,A+6,B+20);
                  line(A+4,B+13,A+6,B+19);
                  line(A+6,B+20,A+10,B+18);
                  line(A+6,B+19,A+10,B+17);
                  line(A+10,B+18,A+8,B+12);
                  line(A+10,B+17,A+8,B+11);
                  line(A+8,B+12,A+12,B+12);
                  line(A+8,B+11,A+12,B+11);
                  }

                  void showmouse() /*中断显示鼠标*/
                  {
                   union REGS inregs,outregs;
                   inregs.x.ax=0x01; /*显示鼠标*/
                   int86(0x33,&inregs,&outregs);
                  }

                  int mouse(int *mx,int *my,int *key,int n) /*画鼠标是利用将一个空矩形存入内存中,然后再在该空矩形中画鼠标形状*/
                  {
                   int a=0,b=0,c=n,a_old=0,b_old=0; /*a,b的值可以随便*/
                   int *ball; /*定义指向内存的存储图形的指针*/
                   ball=malloc(imagesize(a,b,a+15,b+25)); /*返回矩形的大小*/
                   getimage(a,b,a+15,b+25,ball); /*第一次将图形(一个空矩形)存入到内存中,内存中存入的是一个空矩形*/


                   while(c==n) /*鼠标与键盘操作的转换*/
                   {
                   if(kbhit())
                  {
                   putimage(a,b,ball,0);
                   free(ball);
                   return getch();
                  }
                   getmouse(&a,&b,&c); /*a,为横坐标,b,为列坐标,c为按键状态*/
                   if(a<0) a=0; /*保证鼠标左边不出界*/
                   if(b<0) b=0; /*保证上面不出界*/
                   if(a>getmaxx()-15) a=getmaxx()-15; /*保证右边不出界*/
                   if(b>getmaxy()-25) b=getmaxy()-25; /*保证下边不出界*/
                   if(a!=a_old || b!=b_old) /*当鼠标移动时*/
                   {
                   putimage(a_old,b_old,ball,0); /*在a_old,b_old输出图形,用来擦掉原来的鼠标*/
                   getimage(a,b,a+15,b+25,ball); /*这条语句是将目前鼠标所在位置的图形存贮到ball里面试着看着有无这条语句的区别*/
                   /*不需要在获取了*/
                   drawmouse(a,b);
                   /*画鼠标*/
                   }
                   a_old=a;b_old=b;
                   } /*while()结束*/
                   *mx=a;*my=b;*key=c; /*返回按键后鼠标的位置*/
                   putimage(a,b,ball,0); /*将鼠标擦掉,因为存在ball里面的是一个背景为缺省状态下的一个空矩形*/
                   free(ball);
                   return -1;
                  }
                  void face()
                  { void drawkey(int,int); /*画键声明*/
                   /*图形初始化*/
                   int driver,mode,x,y,x1,y1;
                   driver=VGA;
                   mode=VGAHI;
                   registerbgidriver(EGAVGA_driver);
                   initgraph(&driver,&mode,"c:\\turboc2");
                   /*方框填充画计算器外体*/
                   x=(getmaxx()/2)-150;
                   y=(getmaxy()/2)-120;
                   x1=(getmaxx()/2)+150;
                   y1=(getmaxy()/2)+120;
                   setfillstyle(SOLID_FILL,7);
                   bar(x,y,x1,y1);
                  


                  IP属地:浙江15楼2006-06-22 00:41
                  回复
                     /*画标题栏*/
                     setfillstyle(SOLID_FILL,9);
                     bar(x,y,x1,y+15);
                     outtextxy(x+12,y+5,"C-718 COUNTER");
                     setfillstyle(SOLID_FILL,15);
                     bar(x1-15,y,x1,y+15);
                     setcolor(0);
                     line(x1-15,y,x1,y+15);
                     line(x1,y,x1-15,y+15);
                     /*画输出窗口*/
                     setfillstyle(SOLID_FILL,0);
                     bar(175-1,142-1,425+41,142+21);
                     setfillstyle(SOLID_FILL,15);
                     bar(175,142,425+40,142+20); /*算式输出窗口*/
                     outtextxy(320,190-20+10,"Result:");
                     setfillstyle(SOLID_FILL,0);
                     bar(375,190-20,425+40,190+1); /*结果输出窗口*/
                     /*画键*/
                     settextstyle(2,0,6);
                     drawkey(175,200);
                     outtextxy(175+17,200+5,"7");
                     drawkey(175,240);
                     outtextxy(175+17,240+5,"4");
                     drawkey(175,280);
                     outtextxy(175+17,280+5,"1");
                     drawkey(175,320);
                     outtextxy(175+17,320+5,"0");
                     drawkey(225,200);
                     outtextxy(225+17,200+5,"8");
                     drawkey(225,240);
                     outtextxy(225+17,240+5,"5");
                     drawkey(225,280);
                     outtextxy(225+17,280+5,"2");
                     drawkey(225,320);
                     outtextxy(225+17,320+5,".");
                     drawkey(275,200);
                     outtextxy(275+17,200+5,"9");
                     drawkey(275,240);
                     outtextxy(275+17,240+5,"6");
                     drawkey(275,280);
                     outtextxy(275+17,280+5,"3");
                     drawkey(275,320);
                     outtextxy(275+17,320+5,"=");
                     drawkey(325,200);
                     outtextxy(325+17,200+5,"+");
                     drawkey(325,240);
                     outtextxy(325+17,240+5,"-");
                     drawkey(325,280);
                     outtextxy(325+17,280+5,"*");
                     drawkey(325,320);
                     outtextxy(325+17,320+5,"/");
                     drawkey(375,200);
                     outtextxy(375+7,200+5,"+/-");
                     drawkey(375,240);
                     outtextxy(375+9,240+5,"sin");
                     drawkey(375,280);
                     outtextxy(375+13,280+5,"ln");
                     drawkey(375,320);
                     outtextxy(375+3,320+5,"sqrt");
                     drawkey(425,200);
                     outtextxy(425+17,200+5,"C");
                     drawkey(425,240);
                     outtextxy(425+9,240+5,"cos");
                     drawkey(425,280);
                     outtextxy(425+14,280+5,"lg");
                     drawkey(425,320);
                     outtextxy(425+7,320+5,"pow");
                     setfillstyle(SOLID_FILL,9);
                     bar(175,190-20,275+40,190);
                     setcolor(1);
                     line(175,190,275+40,190);
                     line(275+40,190-20,275+40,190);
                     setcolor(15);
                     line(175,190-20,275+40,190-20);
                     line(175,190-20,175,190);
                     outtextxy(175+20,190-20,"space-key");

                    }

                    /*画键函数*/
                    void drawkey(int x,int y)
                    { int x1,y1;
                     x1=x+40;
                     y1=y+30;
                     setcolor(15);
                     line(x,y,x1,y);
                     line(x1,y,x1,y1);
                     line(x1,y1,x,y1);
                     line(x,y1,x,y);
                     setfillstyle(1,1);
                     bar(x+1,y+1,x1,y1);
                     setfillstyle(1,9);
                     bar(x+1,y+1,x1-1,y1-1);
                    }

                    /*按下的键的函数*/
                    void presskey(int x,int y)
                    { int x1,y1;
                     x1=x+40;
                     y1=y+30;
                     setfillstyle(1,9);
                     bar(x+1,y+1,x1-1,y1-1);
                     setcolor(15);
                     line(x1,y,x1,y1);
                     line(x1,y1,x,y1);
                     setcolor(1);
                     line(x,y,x1,y);
                     line(x,y,x,y1);
                    }

                    /*按下的spacekey键的函数*/
                    void presssk()
                    {
                     setfillstyle(SOLID_FILL,9);
                     bar(175,190-20,275+40,190);
                     setcolor(15);
                     line(275+40,190,275+40,190-20);
                     line(275+40,190,175,190);
                     setcolor(1);
                     line(175,190-20,175,190);
                     line(175,190-20,275+40,190-20);
                     outtextxy(175+20,190-20,"space-key");
                    }

                    /*按键与显示的联系*/
                    int i=0;
                    void dianji()
                    {
                     int j=0,sig;
                     do
                    {
                     ams=mouse(&mx,&my,&keys,0);
                     if(keys==1)
                     ams=mouse(&mx,&my,&keys,1);
                     sig=0;

                     if(mx>175&&mx<215&&my>200&&my<230&&keys==0&&ams==-1||ams=='7')
                     {value='7';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                    


                    IP属地:浙江16楼2006-06-22 00:41
                    回复
                      presskey(175,200);outtextxy(175+17,200+5,"7");
                      delay(DELAYTIME);drawkey(175,200);
                      outtextxy(175+17,200+5,"7");sig=1;}

                       if(mx>175&&mx<215&&my>280&&my<310&&keys==0&&ams==-1||ams=='1')
                       {value='1';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(175,280);outtextxy(175+17,280+5,"1");
                      delay(DELAYTIME);drawkey(175,280);
                      outtextxy(175+17,280+5,"1");sig=1;}

                       if(mx>175&&mx<215&&my>320&&my<350&&keys==0&&ams==-1||ams=='0')
                       {value='0';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(175,320);outtextxy(175+17,320+5,"0");
                      delay(DELAYTIME);drawkey(175,320);
                      outtextxy(175+17,320+5,"0");sig=1;}

                       if(mx>275&&mx<315&&my>240&&my<270&&keys==0&&ams==-1||ams=='6')
                       {value='6';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(275,240);outtextxy(275+17,240+5,"6");
                      delay(DELAYTIME);drawkey(275,240);
                      outtextxy(275+17,240+5,"6");sig=1;}

                       if(mx>225&&mx<265&&my>200&&my<230&&keys==0&&ams==-1||ams=='8')
                       {value='8';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(225,200);outtextxy(225+17,200+5,"8");
                      delay(DELAYTIME);drawkey(225,200);
                      outtextxy(225+17,200+5,"8");sig=1;}

                       if(mx>225&&mx<265&&my>240&&my<270&&keys==0&&ams==-1||ams=='5')
                       {value='5';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(225,240);outtextxy(225+17,240+5,"5");
                      delay(DELAYTIME);drawkey(225,240);
                      outtextxy(225+17,240+5,"5");sig=1;}

                       if(mx>225&&mx<265&&my>280&&my<310&&keys==0&&ams==-1||ams=='2')
                       {value='2';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(225,280);outtextxy(225+17,280+5,"2");
                      delay(DELAYTIME);drawkey(225,280);
                      outtextxy(225+17,280+5,"2");sig=1;}

                       if(mx>275&&mx<315&&my>200&&my<230&&keys==0&&ams==-1||ams=='9')
                       {value='9';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(275,200);outtextxy(275+17,200+5,"9");
                      delay(DELAYTIME);drawkey(275,200);
                      outtextxy(275+17,200+5,"9");sig=1;}

                       if(mx>275&&mx<315&&my>280&&my<315&&keys==0&&ams==-1||ams=='3')
                       {value='3';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(275,280);outtextxy(275+17,280+5,"3");
                      delay(DELAYTIME);drawkey(275,280);
                      outtextxy(275+17,280+5,"3");sig=1;}

                       if(mx>175&&mx<215&&my>240&&my<275&&keys==0&&ams==-1||ams=='4')
                       {value='4';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(175,240);outtextxy(175+17,240+5,"4");
                      delay(DELAYTIME);drawkey(175,240);
                      outtextxy(175+17,240+5,"4");sig=1;}

                       if(mx>225&&mx<265&&my>320&&my<350&&keys==0&&ams==-1||ams=='.')
                       {value='.';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(225,320);outtextxy(225+17,320+5,".");
                      delay(DELAYTIME);drawkey(225,320);
                      outtextxy(225+17,320+5,".");sig=1;}

                       if(mx>275&&mx<315&&my>320&&my<350&&keys==0&&ams==-1||ams==13)
                       {value='=';i=i+NUMDIS;presskey(275,320);outtextxy(275+17,320+5,"=");
                      delay(DELAYTIME);drawkey(275,320);outtextxy(275+17,320+5,"=");sig=1;}

                       if(mx>325&&mx<365&&my>200&&my<230&&keys==0&&ams==-1||ams=='+')
                       {value='+';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      presskey(325,200);outtextxy(325+17,200+5,"+");
                      delay(DELAYTIME);drawkey(325,200);
                      outtextxy(325+17,200+5,"+");sig=1;}

                       if(mx>325&&mx<365&&my>240&&my<270&&keys==0&&ams==-1||ams=='-')
                       {value='-';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                      


                      IP属地:浙江17楼2006-06-22 00:41
                      回复
                        presskey(325,240);outtextxy(325+17,240+5,"-");
                        delay(DELAYTIME);drawkey(325,240);
                        outtextxy(325+17,240+5,"-");sig=1;}

                         if(mx>325&&mx<365&&my>280&&my<310&&keys==0&&ams==-1||ams=='*')
                         {value='*';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(325,280);outtextxy(325+17,280+5,"*");
                        delay(DELAYTIME);drawkey(325,280);
                        outtextxy(325+17,280+5,"*");sig=1;}

                         if(mx>325&&mx<365&&my>320&&my<350&&keys==0&&ams==-1||ams=='/')
                         {value='/';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(325,320);outtextxy(325+17,320+5,"/");
                        delay(DELAYTIME);drawkey(325,320);
                        outtextxy(325+17,320+5,"/");sig=1;}

                         if(mx>375&&mx<415&&my>200&&my<230&&keys==0&&ams==-1||ams=='f')
                         {value='f';i=i+NUMDIS;outtextxy(175+i,142+5,"-");
                        presskey(375,200);outtextxy(375+7,200+5,"+/-");
                        delay(DELAYTIME);drawkey(375,200);
                        outtextxy(375+7,200+5,"+/-");sig=1;}

                         if(mx>375&&mx<415&&my>240&&my<270&&keys==0&&ams==-1||ams=='s')
                         {value='s';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(375,240);outtextxy(375+9,240+5,"sin");
                        delay(DELAYTIME);drawkey(375,240);
                        outtextxy(375+9,240+5,"sin");sig=1;}

                         if(mx>375&&mx<415&&my>280&&my<310&&keys==0&&ams==-1||ams=='l')
                         {value='l';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(375,280);outtextxy(375+13,280+5,"ln");
                        delay(DELAYTIME);drawkey(375,280);
                        outtextxy(375+13,280+5,"ln");sig=1;}

                         if(mx>375&&mx<415&&my>320&&my<350&&keys==0&&ams==-1||ams=='S')
                         {value='S';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(375,320);outtextxy(375+3,320+5,"sqrt");
                        delay(DELAYTIME);drawkey(375,320);
                        outtextxy(375+3,320+5,"sqrt");sig=1;}

                         if(mx>425&&mx<465&&my>200&&my<230&&keys==0&&ams==-1||ams=='C') /*设置清屏*/
                         {value='C';
                         setfillstyle(SOLID_FILL,15);
                         bar(175,142,425+40,142+20);
                         setfillstyle(SOLID_FILL,0);
                         bar(375,190-20,425+40,190+1);
                         i=0;presskey(425,200);outtextxy(425+17,200+5,"C");
                         delay(DELAYTIME);drawkey(425,200);
                         outtextxy(425+17,200+5,"C");sig=1;
                         }

                         if(mx>425&&mx<465&&my>240&&my<270&&keys==0&&ams==-1||ams=='c')
                         {value='c';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(425,240);outtextxy(425+9,240+5,"cos");
                        delay(DELAYTIME);drawkey(425,240);
                        outtextxy(425+9,240+5,"cos");sig=1;}

                         if(mx>425&&mx<465&&my>280&&my<310&&keys==0&&ams==-1||ams=='L')
                         {value='L';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(425,280);outtextxy(425+14,280+5,"lg");
                        delay(DELAYTIME);drawkey(425,280);
                        outtextxy(425+14,280+5,"lg");sig=1;}

                         if(mx>425&&mx<465&&my>320&&my<350&&keys==0&&ams==-1||ams=='P')
                         {value='P';i=i+NUMDIS;outtextxy(175+i,142+5,&value);
                        presskey(425,320);outtextxy(425+9,320+5,"pow");
                        delay(DELAYTIME);drawkey(425,320);
                        outtextxy(425+9,320+5,"pow");sig=1;}



                         if(mx>175&&mx<315&&my>170&&my<190&&keys==0&&ams==-1||ams==' ')
                         { value=' ';
                         i=i+NUMDIS;
                         outtextxy(175+i,142+5,&value);
                         presssk();
                         delay(DELAYTIME);
                         setfillstyle(SOLID_FILL,9);
                         bar(175,190-20,275+40,190);
                         setcolor(1);
                         line(175,190,275+40,190);
                         line(275+40,190-20,275+40,190);
                         setcolor(15);
                         line(175,190-20,275+40,190-20);
                         line(175,190-20,175,190);
                         outtextxy(175+20,190-20,"space-key");sig=1;
                        


                        IP属地:浙江18楼2006-06-22 00:41
                        回复
                          }

                           if(mx>454&&mx<469&&my>119&&my<134&&keys==0&&ams==-1||ams==27)
                           {value=27;i=i+NUMDIS;outtextxy(175+i,142+5,&value);sig=1;}

                           if(sig==1)
                           {fun[j++]=value;
                           fun[j]='\0';}
                           else continue;
                          }
                          while(value!='='&&value!=27);
                          }

                          int m=0;
                          double data[MAX];

                          void push(double n) /*入栈操作,将得到的数字压入栈中*/
                          {
                           if(m<MAX)
                           data[m++]=n;
                          }

                          double pop() /*出栈操作*/
                          {
                           if(m>0)
                           return data[--m];
                           else
                           return 0;
                          }

                          int getsign() /*读入字符*/
                          {
                           return fun[flag++];
                          }

                          int judge(char s[]) /*获取运算分量*/
                          {
                           int j,c;
                           s[0]=c=getsign();
                           while(c==' '||c=='\t')
                           s[0]=c=getsign();
                           if(!isdigit©&&c!='.'&&c!='f')
                           return c;
                           j=0;
                           if(c=='f') /*对负数进行判断,f表示负数*/
                           {
                           while(isdigit(s[j]=c=getsign()))
                           j++;
                           if(c=='.')
                           while(isdigit(s[j+1]=c=getsign()))
                           j++;
                           s[j+1]='\0';
                           return 'f';
                           }
                           if(isdigit©) /*对后面的字符进行判断,是数字则存入数组*/
                           while(isdigit(s[j+1]=c=getsign()))
                           j++;
                           if(c=='.') /*将小数点后的数字存入数组*/
                           while(isdigit(s[j+2]=c=getsign()))
                           j++;
                           s[j+2]='\0';
                           return NUMBER;
                          }

                          int res=0;
                          void error()
                          {
                           gotoxy(40+8,20-8);
                           printf("error!");
                           res=1;
                          }

                          void main()
                          {
                           int sign,k;
                           int shu=0;
                           double t,t1;
                           char s[MAX];
                           int mode=VGAHI,devices=VGA;
                           initgraph(&devices,&mode,"C:\\turboc2"); /*图型模式初始化*/
                           face();
                           showmouse();
                           dianji();
                           while((sign=judge(s))!=27&&value!=27) /*ESC,程序结束*/
                           {
                           if(fun[flag]=='\0')
                           {flag=0;shu=1;}
                           switch (sign)
                           {
                           case 'C':
                           for(k=0;k<MAX;k++)
                           {m=0;data[k]=0;}
                           break;
                           case NUMBER:
                           push(atof(s));
                           break;
                           case '+':
                           push(pop()+pop());
                           break;
                           case '*':
                           push(pop()*pop());
                           break;
                           case '-':
                           t=pop();
                           push(pop()-t);
                           break;
                           case '/':
                           t=pop();
                           if(t!=0.0)
                           push(pop()/t);
                           else
                           error();
                           break;
                           case 'f':
                           push(-atof(s));
                           break;
                           case 'S':
                           t=pop();
                           if(t>=0)
                           push(sqrt(t));
                           else
                           error();
                           break;
                           case 'P':
                           t=pop();
                           t1=pop();
                           if(t1!=0)
                           push(pow(t1,t));
                           else
                           error();
                           break;
                           case 's':
                           t=pop();
                           push(sin(t));
                           break;
                           case 'c':
                           t=pop();
                           push(cos(t));
                           break;
                           case 'L':
                           t=pop();
                           if(t>0)
                           push(log10(t));
                           else
                           error();
                           break;
                           case 'l':
                           t=pop();
                           if(t>0)
                           push(log(t));
                           else
                           error();
                           break;
                           case '=': /*回车表示此次运算结束*/
                           if(res==0)
                           {
                           gotoxy(40+8,20-8);
                           printf("%.8g\n",pop());
                           }
                           for(k=0;k<MAX;k++)
                           {m=0;data[k]=0;}
                           break;
                           }
                           if(sign=='=')
                           res=0;
                           if(shu==1)
                           dianji();
                           shu=0;
                           }
                          }


                          IP属地:浙江19楼2006-06-22 00:41
                          回复
                            备份
                            扫雷游戏,C语言源代码
                            如下


                            IP属地:浙江20楼2006-06-22 00:43
                            回复
                              靠?还含有危险信息?邪门,改天


                              IP属地:浙江21楼2006-06-22 00:45
                              回复