java编写计算器一的计算器,能计算从键盘上输入一算术表达式。如输...

&&问题点数:0&&回复次数:12&&&
算术表达式计算器
算术表达式计算器
&&&&&& 这是用C语言写的一个计算器,功能有点简单,只能对算术表达式进行计算! 源程序在VC++6.0下编译通过.&&&&&&&&&&&有兴趣的网友,可以下载测试一下.
&&&&&& 设计的主要思路是:在只将表达式扫描一遍的条件下,运用一个能提取出一个数据项和一个符号项的函数,通过循环调用这个函数,并利用栈操作函数,实现对表达式的计算.对括号匹配的处理是用一个计数器变量,出现左括号加1,出现右括号减1,值为0说明括号匹配.
&&&&&& 在给出源程序之前,先介绍一下,几个比较重要的函数.
&&&&&& 函数 getexp
&&&&&& 这个函数的原型是:int getexp(double *data,char *); 它能够提取出表达式中的数据项和符号项,对这个函数的调用,至少能提取出一个符号项, 根据提取的项不同,其返回值从1到8有个;返回负数表示在提取的过程中有错误;对负数的处理是;除了第一项的负数外,其它的负数必须用括号括起来;&&&&&&&&
&&&&&& 函数 PopData , PushData , PopOprt ,PushOprt
&&&&&& 这四个函数分别实现数据入栈\出栈,操作符入栈\出栈;
&&&&&& 函数 calculat
&&&&&& 原型是: int calculat(double data1,char oprt,double data2);能对两个数据根据oprt 进行计算,计算出现错误返回负数,否则返回正数;
&&&&&& 函数 checkgram
&&&&&& 原型是:int checkgram(int fsitua,int lsitua);配合getexp的返回值使用,对表达式进行语法检查;
&&&&&& 函数 priority
&&&&&& 原型是:int priority(char cal1,char cal2);比较操作符的优先级,为了保持一致性,把'\0'和括号也看作操作符;
&&&&&& 函数 char_to_double
&&&&&& 原型:double char_to_double(char DigitString[],int markpot,int markend);将字符串转变成双精度数;
&&&&&& 下面是源
#include &stdio.h&
#include &ctype.h&
#include &math.h&
#define MAX_DATA_BIT 100
#define YES 1
#define NO 0
#define POINT_UNEXIST -15
#define MAXSIZE 100
int EXP_INIT=YES;
int BRACKET_COUNT=0;
//标识运算符,不包括括号
int iscalchar(char c);
//标识空白字符,不包括换行符
int is_space(char c);
//标识表达式第一个合法字符
int isFIRSTallow(char c);
//标识表达式的合法字符
int isallow(char c);
//函数,将字符串转换成双精度数
double char_to_double(char DigitString[],int markpot,int markend);
//得到表达式的首项,并检查字符是否合法
int getexp(double *data,char *oprt);
typedef struct
&&& char oprt_stack[MAXSIZE];
&&& double data_stack[MAXSIZE];
&&& char oprt_in,oprt_out,*oprt_
&&& double data_in,data_out,*data_
/*&&&一组栈操作函数&&&&&&&&*/
/*操作成功返回1,失败返回0&&*/
int PopData(stack *p);
int PushData(stack *p);
int PopOprt(stack *p);
int PushOprt(stack *p);
void clear(stack *p);
//语法检查函数,返回2表示表达式结束
int checkgram(int fsitua,int lsitua);
//功能函数,比较两个运算符的优先级
int priority(char cal1,char cal2);
//错误处理函数,丢弃出错后所有字符,并打印出错信息
void error(int state);
//计算函数,有发现简单逻辑错误的功能
int calculat(double data1,char oprt,double data2,double *result);
stack STK;
void main()
&&& int FState,LState,GramState,CalcuS
&&& double result,TempD
&&& char TempO
&&& STK.data_curp=STK.data_
&&& STK.oprt_curp=STK.oprt_
&&& while(1){
&&&&&&&&clear(&STK);
&&&&&&&&EXP_INIT=YES;
&&&&&&&&BRACKET_COUNT=0;
&&&&&&&&LState=100;
&&&&&&&&GramState=1;
&&&&&&&&CalcuState=1;
&&&&&&&&printf(&input express& &);
&&&&&&&&do{
&&&&&&&&&&&&
&&&&&&&&&&&&FState=LS
&&&&&&&&&&&&if((LState=getexp(&STK.data_in,&STK.oprt_in))&0){
&&&&&&&&&&&&&&& error(LState);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&if((GramState=checkgram(FState,LState))&0){
&&&&&&&&&&&&&&& error(GramState);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&//-------------对表达式的计算------------------------------------------------------
&&&&&&&&&&&&if(LState==1||LState==2||LState==3||LState==4)
&&&&&&&&&&&&&&& PushData(&STK);
&&&&&&&&&&&&if(LState==2||(LState==6&&(FState==3||FState==7))){
&&&&&&&&&&&&&&& TempOprt=STK.oprt_
&&&&&&&&&&&&&&& STK.oprt_in='*';
&&&&&&&&&&&&}
&&&&&&&&&&&&while(priority(*(STK.oprt_curp),STK.oprt_in)&0
&&&&&&&&&&&&&&& && *STK.oprt_curp!='(' && STK.oprt_curp!=STK.oprt_stack){
&&&&&&&&&&&&&&& PopData(&STK);
&&&&&&&&&&&&&&& TempData=STK.data_
&&&&&&&&&&&&&&& PopData(&STK);
&&&&&&&&&&&&&&& PopOprt(&STK);
&&&&&&&&&&&&&&& CalcuState=calculat(STK.data_out,STK.oprt_out,TempData,&result);
&&&&&&&&&&&&&&& if(CalcuState&0)
&&&&&&&&&&&&&&& STK.data_in=
&&&&&&&&&&&&&&& PushData(&STK);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&if(*STK.oprt_curp=='(' && (LState==3||LState==7)) PopOprt(&STK);
&&&&&&&&&&&&if(!(LState==3||LState==4||LState==7||LState==8)) PushOprt(&STK);
&&&&&&&&&&&&if(LState==2||(LState==6&&(FState==3||FState==7))){
&&&&&&&&&&&&&&& STK.oprt_in=TempO
&&&&&&&&&&&&&&& PushOprt(&STK);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&if(CalcuState&0){
&&&&&&&&&&&&&&& error(CalcuState);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&}while (LState!=4&&LState!=8);
&&&&&&&&if((LState==4||LState==8)&&BRACKET_COUNT!=0) error(-8);
&&&&&&&&if((LState==4||LState==8) && BRACKET_COUNT==0 && GramState&0 && CalcuState&0 && FState+LState!=108)
&&&&&&&&&&&&printf(&the result is: %f\n&,STK.data_in);
&&&&&&&&&&&&&&&
&&&&&&&&putchar('\n');
&&&&&&&&if(STK.oprt_in!='\n') while(getchar()!='\n');
&&&&&&&&STK.oprt_in='\0';
int isoprt( char c)
&&& if (c=='+'||c=='-'||c=='*'||c=='/'||c=='^')
&&&&&&&&return 1;
&&&&&&&&return 0;
int is_space(char c)
&&& if (c==' '||c=='\t'||c=='\v')
&&&&&&&&return 1;
&&&&&&&&return 0;
int isFIRSTallow(char c)
&&& if (c=='.'||c=='-'||c=='('||isdigit(c))
&&&&&&&&return 1;
&&&&&&&&return 0;
int isallowed(char c)
&&& if (c=='.'||isoprt(c)||c=='('||isdigit(c)||c==')')
&&&&&&&&return 1;
&&&&&&&&return 0;
double char_to_double(char data[],int markpot,int markend)
&&& double sumz=0,sumf=0;
&&& if (data[0]!='-'){
&&&&&&&&for (i=0;i&++i)
&&&&&&&&&&&&sumz=sumz*10+(data[i]-'0');
&&&&&&&&for (i=markend-1;i&--i)
&&&&&&&&&&&&sumf=sumf*0.1+(data[i]-'0');
&&&&&&&&return sumz+sumf*0.1;
&&&&&&&&for (i=1;i&++i)
&&&&&&&&&&&&sumz=sumz*10+(data[i]-'0');
&&&&&&&&for (i=markend-1;i&--i)
&&&&&&&&&&&&sumf=sumf*0.1+(data[i]-'0');
&&&&&&&&return -(sumz+sumf*0.1);
int getexp (double *data,char *oprt)
&&& int c,i=0,mrkpot=POINT_UNEXIST;
&&& char temp[MAX_DATA_BIT];
&&& while (is_space(c=getchar()));
&&& if (c=='\n') {*oprt=c;return 8;}
&&& if (!isallowed(c)) return -1;
&&& if (EXP_INIT==YES) {
&&&&&&&&if(!isFIRSTallow(c)) return -4;
&&&&&&&&if(c=='('){++BRACKET_COUNT;*oprt=c;return 6;}
&&&&&&&&else{
&&&&&&&&&&&&temp[i]=c;
&&&&&&&&&&&&if (c=='.') mrkpot=i;
&&&&&&&&&&&&++i;
&&& else {
&&&&&&&&if (!isallowed(c)) return -1;
&&&&&&&&if (c=='(') {
&&&&&&&&&&&&++BRACKET_COUNT;
&&&&&&&&&&&&*oprt=c;
&&&&&&&&&&&&EXP_INIT=YES;
&&&&&&&&&&&&return 6;
&&&&&&&&if (c==')') {
&&&&&&&&&&&&--BRACKET_COUNT;
&&&&&&&&&&&&*oprt=c;
&&&&&&&&&&&&return 7;
&&&&&&&&if (isoprt(c)) {
&&&&&&&&&&&&*oprt=c;
&&&&&&&&&&&&return 5;
&&&&&&&&else {
&&&&&&&&&&&&temp[i]=c;
&&&&&&&&&&&&if (c=='.') mrkpot=i;
&&&&&&&&&&&&++i;
&&& //期望等到一个完整的数据项************************
&&& while ((isdigit(c=getchar())||c=='.') && i&MAX_DATA_BIT){
&&&&&&&&if (c=='.'&&mrkpot!=POINT_UNEXIST) return -2;
&&&&&&&&else {
&&&&&&&&&&&&temp[i]=c;
&&&&&&&&&&&&if (c=='.') mrkpot=i;
&&&&&&&&&&&&++i;
&&& //**************************************************&&&
&&& if (i==1&&!isdigit(temp[0])||i==2&&!isdigit(temp[0])&&!isdigit(temp[1])) {*oprt=c;return -2;}
&&& if(i==MAX_DATA_BIT&&(isdigit(c)||c=='.')) {*oprt=c;return -3;}//返回值还需要进行字符常量化
&&& if (mrkpot==POINT_UNEXIST) mrkpot=i;
&&& *data=char_to_double (temp,mrkpot,i);
&&& EXP_INIT=NO;
&&& if (is_space(c)) while (is_space(c=getchar()));
&&& if (c=='\n') {*oprt=c;return 4;}
&&& if (!isoprt(c)&&c!='('&&c!=')') {*oprt=c;return -1;}
&&& *oprt=c;
&&& if (isoprt(c)) return 1;
&&& if (c=='(') {
&&&&&&&&++BRACKET_COUNT;
&&&&&&&&EXP_INIT=YES;
&&&&&&&&return 2;
&&& else {
&&&&&&&&--BRACKET_COUNT;
&&&&&&&&return 3;
int priority (char cal1,char cal2)
&&& if (cal1=='\0'||cal1=='('||cal2=='('||cal2=='^'||((cal2=='*'||cal2=='/')&&(cal1=='+'||cal1=='-')))
&&&&&&&&return -1;
&&&&&&&&return 1;
void error (int state)
&&& if (state==-1)
&&&&&&&&printf(&表达式出现不合法字符!\n&);
&&& else if(state==-2)
&&&&&&&&printf(&表达式有不合法数据项!\n&);
&&& else if(state==-3)
&&&&&&&&printf(&表达式中数据太大了!\n&);
&&& else if(state==-4)
&&&&&&&&printf(&表达式有语法错误!\n&);&&
&&& else if(state==-5)
&&&&&&&&printf(&表达式逻辑错误\n除数不能为0!\n&);
&&& else if(state==-6)
&&&&&&&&printf(&表达式逻辑错误\n幂运算错误!\n&);
&&& else if(state==-7)
&&&&&&&&printf(&栈操作失败,表达式可能太长!\n&);
&&& else if(state==-8){
&&&&&&&&printf(&表达式的括号不匹配!&);
int calculat (double data1,char calchar,double data2,double *result)
&&& switch(calchar){
&&&&&&&&case '+':*result=data1+data2;return 1;
&&&&&&&&case '-':*result=data1-data2;return 1;
&&&&&&&&case '*':*result=data1*data2;return 1;
&&&&&&&&case '/':if (data2!=0.0) {*result=data1/data2;return 1;}
&&&&&&&&&&&&else return -5;
&&&&&&&&case '^':if (data2&0.0||data1!=0) {*result=pow(data1,data2);return 1;}
&&&&&&&&&&&&else return -6; /*没有零的零次方*/
int checkgram (int fsitua,int lsitua) //返回-20表示表达式结束
&&& switch (fsitua)
&&&&&&&&case 1:case 5:if (lsitua==1||lsitua==2||lsitua==3||lsitua==4||lsitua==6) return 1;
&&&&&&&&&&&&&&&else return -4;
&&&&&&&&case 2: case 6:if (lsitua==1||lsitua==2||lsitua==3||lsitua==6) return 1;
&&&&&&&&&&&&&&&else return -4;
&&&&&&&&case 3: case 7:if (lsitua==5||lsitua==6||lsitua==7||lsitua==8) return 1;
&&&&&&&&&&&&&&&else return -4;
&&&&&&&&default:return 1;
int PopData(stack *p)
&&& if (p-&data_curp == p-&data_stack) return -1;
&&& else {
&&&&&&&&p-&data_out = *p-&data_
&&&&&&&&*p-&data_curp=0;
&&&&&&&&p-&data_curp--;
&&&&&&&&return 1;
int PushData(stack *p)
&&& if (p-&data_curp==p-&data_stack+MAXSIZE-1) return -1;
&&& else {
&&&&&&&&&p-&data_curp++;
&&&&&&&&&*p-&data_curp=p-&data_
&&&&&&&&&return 1;
int PopOprt(stack *p)
&&& if (p-&oprt_curp == p-&oprt_stack) return -1;
&&& else {
&&&&&&&&&p-&oprt_out = *p-&oprt_
&&&&&&&&&*p-&oprt_curp = '\0';
&&&&&&&&&p-&oprt_curp --;
&&&&&&&&&return 1;
int PushOprt(stack *p)
&&& if (p-&oprt_curp == p-&oprt_stack + MAXSIZE-1) return -1;
&&& else {
&&&&&&&&p-&oprt_curp ++;
&&&&&&&&*p-&oprt_curp = p-&oprt_
&&&&&&&&return 1;
void clear(stack *p)
&&& while(p-&data_curp != p-&data_stack)
&&&&&&&&*(p-&data_curp--) = 0;
&&& while(p-&oprt_curp != p-&oprt_stack)
&&&&&&&&*(p-&oprt_curp--) = '\0';
附件: 只有本站会员才能下载或查看附件,请
搜索更多相关主题的帖子:
等 级:贵宾
威 望:27
帖 子:2722
不错的样子,问表达式计算的人实在不少
从BFS(Breadth First Study)到DFS(Depth First Study)
等 级:新手上路
帖 子:78
楼主好样的
来 自:卡特的怀抱
等 级:版主
帖 子:9580
专家分:19
可是&&俺们的技术还没发展到这境界`
用代码打出楼房...用编程编出幸福...
等 级:新手上路
帖 子:15
希望与网友交流
写这个程序是为了煅练一下,学习编程就是要多实践!&&我认为我对C的理解并不深刻,所以把这个程序贴出来,一是为了让大家帮忙测试一下这个程序,二是为了和对写计算器感兴趣的网友交流一下.
&&&&&& 下一步将扩充它的功能:
&&&&&& 使它能计算三角函数和对数函数;
&&&&&& 增加整数的求余;
&&&&&& 将结果输出作进一步处理,让它能区分浮点数和整数;
&&&&&& 实现这些功能,需要用到很多我还不熟悉的技术,所以想和网友们交流一下.我的邮箱是[email=][/email] QQ:
&&&&&& 在扩充程序功能的时候会更改整个程序的基本构架,不会用到getexp函数.大家可以看到,就是由于这个函数,整个程序都被限制了,不能把一元运算符结合性体现出来,因此,如果把三角函数看作是一元运算符,那么无论怎样扩充都不能对它进行计算.
等 级:新手上路
你搞个带界面的来呀&&我要参考下&&&谢谢呀
等 级:新手上路
回复 5楼 seaisland
不知道现在进行的怎么样了?到什么程度了?
等 级:新手上路
fsitu 和lsitua这两个变量的命名是什么意思?
等 级:新手上路
我算是真崩溃了...
附件: 只有本站会员才能下载或查看附件,请
等 级:新手上路
回复 9楼 淅沥枫
根本没法注释下去了...
思路太混乱了....
版权所有,并保留所有权利。
Powered by , Processed in 0.031879 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved当前位置:
>>>计算器上有一个倒数键,能求出输入的不为零的数的倒数(注:有时需..
计算器上有一个倒数键,能求出输入的不为零的数的倒数(注:有时需先按或键,才能实现此功能,下面不再说明)。例如,输入2,按下键,则得0.5. 现在计算器上输入某数,再依下列顺序按键:,在显示屏上的结果是-0.75,则原来输入的某数是(&&& )。
题型:填空题难度:偏难来源:竞赛题
马上分享给同学
据魔方格专家权威分析,试题“计算器上有一个倒数键,能求出输入的不为零的数的倒数(注:有时需..”主要考查你对&&求反比例函数的解析式及反比例函数的应用&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
求反比例函数的解析式及反比例函数的应用
反比例函数解析式的确定方法:由于在反比例函数关系式 :y= 中,只有一个待定系数k,确定了k的值,也就确定了反比例函数。因此,只需给出一组x、y的对应值或图象上一点的坐标,代入中即可求出k的值,从而确定反比例函数的关系式。但在实际求反比例函数的解析式时,应该具体问题具体分析。
反比例函数的应用:建立函数模型,解决实际问题。 用待定系数法求反比例函数关系式的一般步骤是: ①设所求的反比例函数为:y=
(k≠0);②根据已知条件(自变量与函数的对应值)列出含k的方程;③由代人法解待定系数k的值;④把k值代人函数关系式y=
中。反比例函数应用一般步骤:①审题;②求出反比例函数的关系式;③求出问题的答案,作答。
发现相似题
与“计算器上有一个倒数键,能求出输入的不为零的数的倒数(注:有时需..”考查相似的试题有:
14143814862389372289217289380718059135(C语言版)科学计算器设计[1]
上亿文档资料,等你来发现
35(C语言版)科学计算器设计[1]
科学计算器设计(C语言版);学校:;学院:计算机信息工程学院语言平台:作者:日期:;一、背景和目的;计算器是现代日常生活中使用较为频繁的工具之一,常;常用的算术表达式有三种,前缀表达式,中缀表达式和;中缀表达式:我们平时书写的表达式就是中缀表达式,;后缀表达式:也叫逆波兰表达式,事实上是算数表达式;前缀表达式:算数表达式形成的树的前序遍历;由于今后工作将使用
科学计算器设计(C语言版)学校:学院:计算机信息工程学院 语言 平台: 作者:
日期:一、 背景和目的计算器是现代日常生活中使用较为频繁的工具之一,常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。常用的算术表达式有三种,前缀表达式,中缀表达式和后缀表达式。中缀表达式:我们平时书写的表达式就是中缀表达式,形如(a+b)*(c+d),事实上是运算表达式形成的树的中序遍历,特点是用括号来描述优先级。后缀表达式:也叫逆波兰表达式,事实上是算数表达式形成的树的后序遍历。中缀表达式(a+b)*(c+d)的后缀表达式是ab+cd+*,它的特点就是遇到运算符就立刻进行运算。前缀表达式:算数表达式形成的树的前序遍历。 日常所书写的是中缀表达式,但是计算机内部是用后缀表达式计算,所以此程序的用户使用中缀表达式作为输入,程序将中缀表达式转化为后缀表达式后再进行运算并输出结果。由于今后工作将使用C语言进行开发,而C语言是一个功能强大并且很灵活的语言,为复习和巩固C编程,故决定用C语言编写一个科学计算器。本次开发采用C语言,以面对过程思想进行开发,使用的数据结构有队列和栈。二、 模块设计本次开发,使用的控制台输入,并直接在控制台输出。 科学计算器的功能组件如下: 三、 详细设计宏:#define TEST
#define MAX_SIZE 100 #define LBRACKET 0
#define RBRACKET 1
#define ADD 2
#define SUB 3
#define MUL 4
#define DIV 5
#define INT 6
#define DOUBLE 7//表示测试阶段 //表达式长度 //左括号 //右括号 //加 //减 //乘 //乘 //整数 //浮点数数据结构:表达式节点struct ExprNode{
//表达式节点类型
//表达式节点数据 };中缀表达式:struct ExprNode infixExpr[MAX_SIZE]; int infixL后缀表达式:struct ExprNode suffixExpr[MAX_SIZE]; int suffixL后缀转换栈:int transStack[MAX_SIZE]; int transT后缀表达式运算栈:struct ExprNode calcuStack[MAX_SIZE];
int calcuT函数过程:__inline int get_char( char *c ) 缓冲变量无字符则读入字符 读入成功返回0,否者返回-1int input_expr( void ) 读入表达式若输入非法字符则返回-1,否则返回0int pri( int a, int b ) 优先级计算若a优先于b则返回-1,否则返回0int trans_expr( void )
中缀表达式转换为后缀表达式括号不匹配返回-1,否则返回0__inline int maxn( int a, int b )
求最大值 struct ExprNode calcu( struct ExprNode *a, struct ExprNode *b, int c ) 计算a和b做c运算的结果int calcu_expr( void ) 计算后缀表达式表达式计算失败返回-1,否则为0void show( void )
输出运算结果 代码:#include&stdio.h&//#define TEST
//表示测试阶段 #define MAX_SIZE 100 //表达式长度 #define LBRACKET 0
//左括号 #define RBRACKET 1
//右括号 #define ADD 2
//加 #define SUB 3
//减 #define MUL 4
//乘 #define DIV 5
//乘 #define INT 6
//整数 #define DOUBLE 7
//浮点数struct ExprNode{
//表达式节点类型
//表达式节点数据 };struct ExprNode infixExpr[MAX_SIZE];
//中缀表达式 int infixLstruct ExprNode suffixExpr[MAX_SIZE];
//后缀表达式 int suffixLint transStack[MAX_SIZE];
//后缀转换栈 int transTstruct ExprNode calcuStack[MAX_SIZE];
//后缀表达式运算栈 int calcuT//缓冲变量无字符则读入字符 //读入成功返回0,否者返回-1__inline int get_char( char *c ) {if ( *c == '\0' ) return scanf( &%c&, c );
return 0;}//读入表达式//若输入非法字符则返回-1,否则返回0 int input_expr( void ) {char c = 0;int flag = 0, error = 0, s,
infixLen = 0;while ( get_char(&c) != -1 )
{switch ( c )
{case '\n': flag = -1;case '(': infixExpr[infixLen++].n = LBRACKET; c = 0;
case ')': infixExpr[infixLen++].n = RBRACKET; c = 0;
case '+': infixExpr[infixLen++].n = ADD; c = 0;
case '-': infixExpr[infixLen++].n = SUB; c = 0;
case '*': infixExpr[infixLen++].n = MUL; c = 0;
case '/': infixExpr[infixLen++].n = DIV; c = 0;
default:if ( c &= '0' && c &= '9' || c == '.' )
{if ( c != '.' )
{infixExpr[infixLen].n = INT;
infixExpr[infixLen].p = c-'0';
{infixExpr[infixLen].n = DOUBLE;
infixExpr[infixLen].p = 0;
}c = 0;while ( get_char(&c) != -1 )
{if ( c &= '0' && c &= '9' )
{infixExpr[infixLen].p infixExpr[infixLen].p*10+(c-'0');
if ( s ) s++;
c = 0;=包含各类专业文献、外语学习资料、专业论文、行业资料、各类资格考试、幼儿教育、小学教育、中学教育、35(C语言版)科学计算器设计[1]等内容。 
 关键字:C 语言程序设计 基本算法 高级编程语言 思想和方法 计算器 Tubro c 2.0 汉化版 目录 第 1 章 选题的意义??? 4 1.1 自我介绍??? 4 1.2 选题?...  用C语言设计一个多功能计算器_信息与通信_工程科技_专业资料。jjjj用C 语言设计一个多功能计算器 实现功能: 1)具备整型数据、浮点型数据的算术(加、减、乘、除...  这时候我们就必须用到科学计算器,所以便着手开 发了这个计算器程序,以便用于自己...C 语言程序设计.清华大学出版社,2005 [3] 谭浩强.C 语言程序设计(第二版)....  C语言程序设计之简单计算器_计算机软件及应用_IT/计算机_专业资料。攀枝花学院 学生...(系):专班业: 级: 计算机学院 计算机科学与技术 10 计本(1)班 陈三清职称...  《C 语言课程设计》报告 设学专班姓指 计 题 目: 称: 业: 级: 名: 师: 简单计算器设计 电子与信息工程学院 计算机科学与技术 计科 09-1 朱凯迪 学号 ...  软件基础课程设计报告 C语言(MFC)计算器设计_IT/计算机_专业资料。软件基础课程设计报告 软件基础课程设计报告 一、需求分析系统目标: 系统目标 设计的计算器至少能...  高级语言程序设计大作业 设计说明书 简单计算器 学 院 电子信息工程学院 11 级通信工程 4 班 彭艺
张伟娜 专业班级 学生姓名 学号 指导老师 1. ...  C语言课程设计报告书___简易计算器[1]_专业资料。w2eC 语言课程设计报告书课程名称: C 语言课程设计 课题名称: 简易计算器 班级: 学号: 姓名: 指导老师: 成绩...  算式计算器C语言版_电子/电路_工程科技_专业资料。课程设计说明书 课程名称: 设计...计算结果必须正确 表达式算式程序设计 班级 计算机科学与技术嵌入式(12-1) 2....用VB写一个计算器,要求支持小键盘输入,不能输入英文字母,功能要全?-中国学网-中国IT综合门户网站
> 用VB写一个计算器,要求支持小键盘输入,不能输入英文字母,功能要全?
用VB写一个计算器,要求支持小键盘输入,不能输入英文字母,功能要全?
转载 编辑:李强
为了帮助网友解决“用VB写一个计算器,要求支持小键盘输入,”相关的问题,中国学网通过互联网对“用VB写一个计算器,要求支持小键盘输入,”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:用VB写一个计算器,要求支持小键盘输入,不能输入英文字母,功能要全?,具体解决方案如下:解决方案1:用键盘ascii码判断就可以了。
比如,在计算器数字键click里,添加代码判断keyboard的输入字符ascii码,如果是需要的数字则接受,否则拒绝。通过对数据库的索引,我们还为您准备了:答:用键盘ascii码判断就可以了。 比如,在计算器数字键click里,添加代码判断keyboard的输入字符ascii码,如果是需要的数字则接受,否则拒绝。===========================================问:按“+”号键就确认一笔数,当前输入的文本框就为空,累计框就加计为新的累...答:'Text1输入,Text2结果 Private Sub Text1_KeyPress(KeyAscii As Integer) Static int1 As Integer Debug.Print KeyAscii '45-,43+ If KeyAscii = 45 Or KeyAscii = 43 Then '+,- If int1 = 0 Then Text2.Text = Val(Text1.Text) Else Text2.Tex...===========================================问:症状:按一下“1”,出现“11”(增加两个1),但在随便按下一个按钮(包括...答:numlock打开的时候按小键盘不是本来就会出现1,2,3,4……的么?根本不需要再添加一个1什么的 你的问题是当Text有焦点时候Text自己就会解析,然后你又监听了,于是……Text先出来个程序解析的1,然后增加一个Text自己解析的1 请试试: 1.屏蔽Text的接...===========================================问:控件(命令按钮)数组command1(index)对应0-9,command2(index)对应...答:代码如下。 ============ Private Sub Text1_KeyPress(KeyAscii As Integer) Command1_Click (KeyAscii - 48) End Sub===========================================问:怎么编写它的代码啊?知道的给点指点答:其实比较简单啦,用一个窗体就可以实现啦! 我自己写的,你可以看看 Option Explicit Dim strNumber As String Dim strPoint As String Dim dblNum1 As Double Dim intOperator As Integer '清除结果 Private Sub cmdGT_Click() txtDisplay.Text = ...===========================================问:怎么编写它的代码啊?知道的给点指点答:去VB版问,最烦这种乱发帖子的,VB什么时候成了其他编程语言了?===========================================问:怎么编写它的代码啊?知道的给点指点答:Option Explicit Dim result As Single Dim strresult As String Private Sub Command1_Click() result = Val(Text1.Text) + Val(Text2.Text) strresult = Str(result) Text3.Text = strresult Text1.SetFocus End Sub Private Sub Command2_Cli...===========================================问:我用vb 6.0编写的计算器程序,控件数组cmdshuzi(index)对应数字0-9和小...答:Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Public Function HotKey(vKeyCode) As Boolean On Error Resume Next HotKey = (GetAsyncKeyState(vKeyCode) & 0) End Function If HotKey(vbKeyNumpa...===========================================问:1 最基本的计算器,有加减乘除,开根号,负数运算等; 2可以用鼠标单击,...答:先建立一个新的项目文件,里面包含一个Form1的窗体。然后,添加控件,包括一个Text框(Text1),和17个按钮,这17个按钮使用的名称都是Command1,只是Index属性不同,就好象一个数组,创立一组按钮的方法是,先在窗体上建立一个按钮(Command1)...=========================================== 用键盘ascii码判断就可以了。 比如,在计算器数字键click里,添加代码判断keyboard的输入字符ascii码,如果是需要的数字则接受,否则拒绝。===========================================Then SendKeys "{BACKSPACE}O44", True End Sub '常数vbKeyNumpad0=96,表示数字小键盘上的0 '{BACKSPACE}是退格符,为了把键盘输入的数字...===========================================键盘"对其他程序发的消息 自己仿造其用SendMessage,理论上可行,不过我觉得,还是没有keybd_event方便。 这个问题上,没有更简单的方法了,你可以做一个Moudle,处理完这个...===========================================每个程序段一般以";"结束。模拟软件在Form2中设置了一个与实际一致的小键盘,用TextBox控件接受输入的程序。软件将输入的每个程序段看作一个字符串,VB提供了丰富的字...===========================================2.基本要求:①要求用Visual Basic对象的思想来完成程序的设计。②在设计程序的过程... & Index② 对于正整数运算单击操作符会结束本操作数的输入,需设置一个逻辑变量...===========================================模拟软件在Form2中设置了一个与实际一致的小键盘,用TextBox控件接受输入的程序。软件将输入的每个程序段看作一个字符串,VB提供了丰富的字符串函数,如Val===========================================ASCII乃歪解根本能区分 Sendkeys确实能办 愿意用keybd_event有其办法: 用SPY++监视Windows屏幕键盘对其程序发消息 自己仿造其用SendMessage理论上行过我觉...===========================================建议你每次做完一个操作后,调用一次.blur方法,也就是让他失去焦点。或者调用textbox.focus,让焦点到文本框去。这样只要监控文本框的输入enter就可以了。===========================================锁定字母键,只开放数字键(或小键盘)。 2、命令按钮中加入一段测试控制程序,点击命令按钮后,先测试textbox中是否为你要求的数字类型,如果有字母的话,则跳出"输入错误"对话...===========================================Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 48 To 57 '按了数字键 Case 96 To 105 '按了小键盘数字键 Case 13 '按了...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助

我要回帖

更多关于 java编写计算器 的文章

 

随机推荐