主题:小小计算器
小春哥哥
[专家分:0] 发布于 2007-05-03 16:36:00
[color=FF00FF][size=5]想做一个计算器,实现加减乘除的功能,呵呵,语句越少越好,哈哈,各位大虾,拜托了哦~~~~~~~[/size][/color]
回复列表 (共2个回复)
沙发
chwen822 [专家分:1540] 发布于 2007-05-05 23:10:00
[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
板凳
q635434924 [专家分:0] 发布于 2008-08-19 17:44:00
用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)
{
}
}
}
我来回复