回 帖 发 新 帖 刷新版面

主题:小小计算器

[color=FF00FF][size=5]想做一个计算器,实现加减乘除的功能,呵呵,语句越少越好,哈哈,各位大虾,拜托了哦~~~~~~~[/size][/color]

回复列表 (共2个回复)

沙发


[em1][em1][em1][em1]
#include <stdio.h>
#include <stdlib.h>
#define stack_size 100
#define stack_increase 10

typedef struct{           //定义字符栈,存放运算符
    char *base;
    char *top;
    int stacksize;
}Sqcharstack;

int Initcharstack(Sqcharstack &s){
    s.base=(char *)malloc(stack_size*sizeof(char));
    if(!s.base){
        printf("存储分配失败\n");
        exit(0);
    }
    s.top=s.base;
    s.stacksize=stack_size;
    return 1;
}

char Getchartop(Sqcharstack s){
    if(s.base==s.top){
        printf("此栈为空\n");
        return NULL;
    }
    
    return *(s.top-1);
}

int Pushchar(Sqcharstack &s,char e){
    if(s.top-s.base>=s.stacksize){
        s.base=(char *)realloc(s.base,(s.stacksize+stack_increase)*sizeof(char));
        if(!s.base){
            printf("存储分配失败\n");
            exit(0);
        }
        s.top=s.base+s.stacksize;
        s.stacksize+=stack_increase;
    }
    *s.top++=e;
    return 1;
}

int Popchar(Sqcharstack &s,char &e){
    if(s.base==s.top){
        printf("此栈为空\n");
        return 0;
    }
    e=*(--s.top);
    return 1;
}

int charStackEmpty(Sqcharstack s){
    if(s.base==s.top)return 1;
    else return 0;
}


//定义符点栈,存放运算数
typedef struct{
    float *base;
    float *top;
    int stacksize;
}Sqfloatstack;

int Initfloatstack(Sqfloatstack &s){
    s.base=(float *)malloc(stack_size*sizeof(float));
    if(!s.base){
        printf("存储分配失败\n");
        exit(0);
    }
    s.top=s.base;
    s.stacksize=stack_size;
    return 1;
}

float Getfloattop(Sqfloatstack s){
    if(s.base==s.top){
        printf("此栈为空\n");
        return 0;
    }
    
    return *(s.top-1);
}

int Pushfloat(Sqfloatstack &s,float e){
    if(s.top-s.base>=s.stacksize){
        s.base=(float *)realloc(s.base,(s.stacksize+stack_increase)*sizeof(float));
(未完)详情见http://chwen822.programfan.com

板凳

用C#写的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace 计算器2007
{
  
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int 运算类别;
        double 数1, 数2;
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void 加号按钮_Click(object sender, EventArgs e)
        {
            数1 = double.Parse(文本框.Text);
            文本框.Text = "";
            运算类别 = 1;
            文本框.Focus();
        }

        private void 减号按钮_Click(object sender, EventArgs e)
        {
            数1 = double.Parse(文本框.Text);
            文本框.Text = "";
            运算类别 = 2;
        }

        private void 乘号按钮_Click(object sender, EventArgs e)
        {
            数1 = double.Parse(文本框.Text);
            文本框.Text = "";
            运算类别 = 3;
        }

        private void 除号按钮_Click(object sender, EventArgs e)
        {
            数1 = double.Parse(文本框.Text);
            文本框.Text = "";
            运算类别 = 4;
        }

        private void 等号按钮_Click(object sender, EventArgs e)
        {
            数2 = double.Parse(文本框.Text);
            switch (运算类别)
            {
                case 1:
                    文本框.Text = (数1 + 数2).ToString(); break;
                case 2:
                    文本框.Text = (数1 - 数2).ToString(); break;
                case 3:
                    文本框.Text = (数1 * 数2).ToString(); break;
                case 4:
                    if (数2 != 0)
                        文本框.Text = (数1 / 数2).ToString();
                    else
                        MessageBox.Show("除数不能为0");
                    break;
                case 0:
                    MessageBox.Show("无法运算");
                    break;
            }//switch
        }

        private void 退出按钮_Click(object sender, EventArgs e)
        {
            this.Close();

        }

        private void 文本框_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册