C#网页版计算器程序代码
calculator.aspx.cs代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class Default2 : System.Web.UI.Page
{
static double[] num = new double[10]; //操作数数组
static char[] oprt = new char[10]; //操作运算符
static string no="";//数字字符串转换为double型数据
static int i = 0, j = 0, st = 0, q = 0;//i数组下标,j运算符下标,st显示屏清零标识符,q 括号下标
static int[] kh = new int[10];//括号数量和坐标 protected void Page_Load(object sender, EventArgs e)
{ if (st == 1) { Label1.Text = "";st = 0; }//清零后操作重新显示 }
protected void Button_Click(object sender, EventArgs e)//数字键组合按钮事件,利用中间no过度得到double型数据
{
Button b=sender as Button;
no += b.Text.ToString() ;
Label1.Text += b.Text;
num[i] = Convert.ToDouble(no);
}
protected void ButtonOprt_Click(object sender, EventArgs e)
{
Button b = sender as Button;
Label1.Text += b.Text;
oprt[j] = Convert.ToChar(b.Text);//操作运算符-+*/
++i; ++j; no = ""; if (j - kh[q] == 3)//保持数字数组中的个数为三个,大于三个时就可以判断计算更新数字数组;
//kh[q]是对于括号中的数字进行统计
{
switch (oprt[j-2].ToString())
{
case "/"://判断第二个运算符是不是*/,假如是还需判断第一个是不是,从而决定计算顺序
{
if (oprt[j - 3].ToString().Equals("/") || oprt[j - 3].ToString().Equals("*")) break;
else { num[i-2] /= num[i-1]; goto update2; }//
} case "*":
{
if (oprt[j - 3].ToString().Equals("/") || oprt[j - 3].ToString().Equals("*")) break;
else { num[i - 2] *= num[i - 1]; goto update2; }
}
default: break; }
switch (oprt[j - 3].ToString())//计算第一个运算符
{
case "/": num[i - 3] /= num[i - 2]; goto update1;
case "*": num[i - 3] *= num[i - 2]; goto update1;
case "+": num[i - 3] += num[i - 2]; goto update1;
case "-": num[i - 3] -= num[i - 2]; goto update1;
default: break; } update1://根据计算结果更新数组和运算符
num[i - 2] = num[i - 1];
oprt[j - 3] = oprt[j - 2];
update2:
i--; j--;
oprt[j - 1] = oprt[j]; } } protected void ButtonDot_Click(object sender, EventArgs e)
{
Label1.Text += ".";
no += ".";
}
protected void ButtonClear_Click(object sender, EventArgs e)//数据清零按钮
{
i = j = 0;no = "";//数据清零
Label1.Text ="0";
st = 1;
}
protected void ButtonTime_Click(object sender, EventArgs e)//显示时间按钮
{
i = j = 0; no = "";//数据清零
Label1.Text = DateTime.Now.ToString();
st = 1;
}
protected void ButtonResult_Click(object sender, EventArgs e)
{
Label1.Text += RstBt.Text;
if (j == 2)
{
switch (oprt[1].ToString())//同ButtonOprt_Click事件中
{
case "/":
{
if (oprt[0].ToString().Equals("/") || oprt[0].ToString().Equals("*")) break;
else { num[1] /= num[2]; i--; j--; break; }
}
case "*":
{
if (oprt[0].ToString().Equals("/") || oprt[0].ToString().Equals("*")) break;
else { num[1] *= num[2]; i--; j--; break; }
}
default: break; }
}
for (int k = 0; k <i; k++)//计算结果
{
switch (oprt[k].ToString())
{
case "/": num[k] /= num[k + 1]; break;
case "*": num[k] *= num[k + 1]; break;
case "+": num[k] += num[k + 1]; break;
case "-": num[k] -= num[k + 1]; break;
default: break;
}
num[k+1] = num[k];
}
num[0] = num[i];
Label1.Text += num[0];
i = j = 0; no = "";//数据清零
st = 1;
}
protected void ButtonOprt2_Click(object sender, EventArgs e)
{
/*对应于计算器中最左边一排运算符
* 使用举例如:计算5!需先点击3数字按钮
* 然后点击!阶乘按钮,显示5_n!
* 点击=按钮即显示结果 5_n!=120,其他同理*/
Button b = sender as Button;
Label1.Text += ("_" + b.Text);
switch (b.ID)
{
case ("t"): num[i] = Math.Pow(10, num[i]); break;
case ("s"): num[i] = Math.Pow(num[i], 2); break;
case ("f"):
for (int m = (int)num[i] - 1; m >= 1; m--)
{ num[i] *= m; }
break;
case ("r"): num[i] = 1 / num[i]; break;
case ("p"): num[i] = num[i] / 100; break;
default: break;
} }
protected void ButtonLkh_Click(object sender, EventArgs e)
{
Button b = sender as Button;
Label1.Text += b.Text;
kh[++q] = i;//记录括号位置,以方便括号中计算结果后存储到num相应索引中
//ButtonOprt_Click中j->j-kh[q],num[0]->num[kh[q]], }
protected void ButtonRkh_Click(object sender, EventArgs e)
{
Button b = sender as Button;
Label1.Text += b.Text;
//当点击一次右括号时把括号中的结果计算出来
//同于=中的算法,num[0]->num[kh[q]],i=kh[q--];j=kh[q--];
if (j - kh[q] == 2)
{
switch (oprt[j-1].ToString())//同ButtonOprt_Click事件中
{
case "/":
{
if (oprt[j-2].ToString().Equals("/") || oprt[j-2].ToString().Equals("*")) break;
else { num[i-2] /= num[i-1]; i--; j--; break; }
}
case "*":
{
if (oprt[j - 2].ToString().Equals("/") || oprt[j - 2].ToString().Equals("*")) break;
else { num[i - 2] *= num[i - 1]; i--; j--; break; }
}
default: break; }
}
for (int k = kh[q]; k < i; k++)//计算结果
{
switch (oprt[k].ToString())
{
case "/": num[k] /= num[k + 1]; break;
case "*": num[k] *= num[k + 1]; break;
case "+": num[k] += num[k + 1]; break;
case "-": num[k] -= num[k + 1]; break;
default: break;
}
num[k + 1] = num[k];
}
num[kh[q]] = num[i];
i = kh[q];
j = kh[q--];
}
}
calculator.aspx代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="calculator.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css"> .bib
{width:50px;
height:35px;
line-height:30px;
background-position: 0 -132px;} </style>
</head>
<body>
<form id="form1" runat="server">
<div> <asp:Panel ID="Panel1" runat="server" BorderStyle=" inset" Width="240px"
Height="35px">
<asp:Label ID="Label1" runat="server" Text="" Height="34px" Width="260px" ></asp:Label>
</asp:Panel> <asp:Panel ID="Panel2" runat="server" BorderStyle="none" Width="283px" >
<asp:Button ID="t" runat="server" Text="10^" class="bib"
onclick="ButtonOprt2_Click" />
<asp:Button ID="Button2" runat="server" Text="(" class="bib"
onclick="ButtonLkh_Click" />
<asp:Button ID="Button3" runat="server" Text=")" class="bib"
onclick="ButtonRkh_Click" />
<asp:Button ID="Button4" runat="server" Text="C" class="bib"
onclick="ButtonClear_Click" />
<asp:Button ID="Button5" runat="server" Text="T" class="bib"
onclick="ButtonTime_Click" /> <br /> <asp:Button ID="s" runat="server" Text="x^2" class="bib"
onclick="ButtonOprt2_Click" />
<asp:Button ID="Button7" runat="server" Text="7" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button8" runat="server" Text="8" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button9" runat="server" Text="9" class="bib"
onclick="Button_Click"/>
<asp:Button ID="Button10" runat="server" Text="/" class="bib"
onclick="ButtonOprt_Click" /> <br /> <asp:Button ID="f" runat="server" Text="n!" class="bib"
onclick="ButtonOprt2_Click"/>
<asp:Button ID="Button12" runat="server" Text="4" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button13" runat="server" Text="5" class="bib"
onclick="Button_Click"/>
<asp:Button ID="Button14" runat="server" Text="6" class="bib"
onclick="Button_Click"/>
<asp:Button ID="Button15" runat="server" Text="*" class="bib"
onclick="ButtonOprt_Click" />
<br /> <asp:Button ID="r" runat="server" Text="1/x" class="bib"
onclick="ButtonOprt2_Click"/>
<asp:Button ID="Button17" runat="server" Text="1" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button18" runat="server" Text="2" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button19" runat="server" Text="3" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button20" runat="server" Text="-" class="bib"
onclick="ButtonOprt_Click" />
<br /> <asp:Button ID="p" runat="server" Text="%" class="bib" onclick="ButtonOprt2_Click" />
<asp:Button ID="Button22" runat="server" Text="0" class="bib"
onclick="Button_Click" />
<asp:Button ID="Button23" runat="server" Text="." class="bib"
onclick="ButtonDot_Click"/>
<asp:Button ID="RstBt" runat="server" Text="=" class="bib"
onclick="ButtonResult_Click" />
<asp:Button ID="Button25" runat="server" Text="+" class="bib"
onclick="ButtonOprt_Click" />
</asp:Panel>
</div>
</form>
</body>
</html>
C#网页版计算器程序代码的更多相关文章
- Js 网页版扫雷游戏代码实现
这个游戏是自己在大约一年前联系js熟练度时做的,用的都是基础的东西,最近比较忙没时间整理.直接发给大家,有兴趣的可以看一下.欢迎大家提出建议.如果你有什么新的想法也可以提出来,或者你并不擅长编程.你想 ...
- vue实现网页简单计算器实例代码
效果: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- 学会使用Hdlbits网页版Verilog代码仿真验证平台
给大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过“https://hdlbits.01xz.net/wiki/Main_Page” 地址链接进 ...
- 原生js写的贪吃蛇网页版游戏特效
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...
- 200行Java代码搞定计算器程序
发现了大学时候写的计算器小程序,还有个图形界面,能够图形化展示表达式语法树,哈哈;) 只有200行Java代码,不但能够计算加减乘除,还能够匹配小括号~ 代码点评: 从朴素的界面配色到简单易懂错误提示 ...
- 纯javascript代码编写计算器程序
今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前 ...
- 基于jQuery仿QQ音乐播放器网页版代码
基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="m ...
- C++ Primer Plus(第6版)中文版——课后练习程序代码
博客内容经历了一次整理,以前发的博文太散.没什么水准,搞的随笔分类越来越多orz,这次把CPP这本书的课后练习的程序代码放到一起方便查阅与修改..嗯 9.6.1 #ifndef _9..1_H_ #d ...
- 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”
这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...
随机推荐
- C#程序部署到Android
C#是一种优秀的编程语言,语法之优雅,代码之简洁使得众多软粉多年来对她不离不弃. 但是如何将C#程序部署到Linux, Android等平台,这当然是得依靠众所周知的Mono. 本文Demo程序比较简 ...
- Ubuntu下安装Apache2, php5 mysql
不错的博文:http://blog.csdn.net/guaikai/article/details/6905781 1:首先安装apache:打开终端(ctrl+Alt+t), 输入命令:sudo ...
- Cocos2d-x java 通过jni调用c++的方法
前面博客说到,cocos2d-x c++界面层运行在一个GLThread线程里面,严格的说是运行在Cocos2dxGLSurfaceView(继承自GLSurfaceView) 里面.opengl的渲 ...
- HDU 1078 FatMouse and Cheese (记忆化搜索+dp)
详见代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <memory. ...
- 打印从1到k之间的所有素数
问题分析:素数是指大于1且只能被它本身和1整除的数,根据定义可以从2开始对一个数取余数一直到它本身,若它有第三个整除数,则可以判定它不是素数.若使用这种方法,会浪费时间,我们可以判断2到这个数的算术平 ...
- 开发者MAC电脑里的十八般兵器
古人常以刀.枪.剑.戟.斧.钺.铲.叉.鞭.锏.锤.戈.镋.棍.槊.棒.矛.钯十八种兵器,样样精通,来形容一个人的武学技能get状态.在开发者的世界里,熟练掌握各种辅助工具,可以达到事半功倍,快速提高 ...
- Eclipse非常有用的快捷键
Eclipse有强大的编辑功能, 工欲善其事,必先利其器, 掌握Eclipse快捷键,可以大大提高工作效率. 小坦克我花了一整天时间, 精选了一些常用的快捷键操作,并且精心录制了动画, 让你一看就会. ...
- 驱动lx4f120h,头文件配置,没有完全吃透,望指点
来了块开发板,没接触过,希望能驱动起来,就首先试一下驱动LED,没想到刚开始建好工程问题就来了 使用GPIO驱动,首先想到的是关于GPIO的头文件gpio.h,事实上这个还不够,还需要设置一下系统的配 ...
- SharePoint PerformancePoint Service-PowerShell
1. 配置托管服务账户 Set-SPPerformancePointSecureDataValues -ServiceApplication "PerformancePoint Servic ...
- TortoiseSVN客户端重新设置用户名和密码[转]
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...