c语言实现袖珍计算器 |
您所在的位置:网站首页 › 编程实现袖珍计算器的方法是什么 › c语言实现袖珍计算器 |
大一无聊,只学了c,没学数据结构之类的东西。所以就裸写了个C语言控制台的小计算器。 1、支持加减乘除、括号输入 2、支持整数、浮点数。 2、支持空格输入 3、支持括号前省略乘号 目前错误输入还有待完善,但功能绝对没问题。 没有涉及堆栈知识(没学)。 #include"stdio.h" #include"windows.h" #include"ctype.h" #define N 200 int t2f = -1;//判断字符,用在输入 int end,testResult,doit; int leftBracket,rightBracket; double numEntered[N]; char operatorEnter[N],operatorCopy[N]; const char legalCharacter[9]={'\0','+','-','*','/','(',')','='}; const double max = 10E16; int record_bracket[N]={0,0};/**记录原始式子中,记录一对括号的位置。 *下标为右括号位置。下标对应的成员为左括号位置*/ double calculateTwoNumbers(char c,double n1,double n2) { double r=0.0; switch(c) { case'*': r=n1*n2; break; case'/': r=n1/n2; break; } return r; } /**初始化各数组、变量*/ void initialize() { int i; //默认输入的东西也包围在一个括号里 for(i=0;i 0;i--) { //如果numEntered[i]存有输入的数,那么operatorEnter[i]= '\0'; if((operatorEnter[i]=='\0'&&operatorEnter[i-1]==')')|| (operatorEnter[i]=='('&&operatorEnter[i-1]=='\0')|| (operatorEnter[i]=='('&&operatorEnter[i-1]==')')) { for(int j = end ; j >= i ; j--) { operatorEnter[j+1]=operatorEnter[j]; numEntered[j+1] = numEntered[j]; numEntered[j] = 0; } operatorEnter[i] = '*'; end++; } } } /**处理空格,和数字与括号间无符号的更正处理情况,给它添加乘号。*/ void editFormat() { deleteSpace(); addMultiplySign(); } //打印数组 void printArrays(char operatorEnter[N],double numEntered[N]) { for(int i = 0;i =leftBracket+1;c--) { if(operatorEnter[c]=='-') { // /*测试用*/printf("减号位于ch[%d]",c); numEntered[c+1]=(-1)*numEntered[c+1]; operatorEnter[c]='\0'; } } } //括号内所有数的和 void sum() { for(int a=leftBracket;a=0;i--)// { rightBracket=end; //初始化右括号的位置在最后 if(operatorEnter[i]=='(') { leftBracket=i; operatorEnter[i]='\0';//记录后消去括号 findRightBrackets(); temp = MultiplicationAndDivision();//计算括号内的所有乘除法 if(temp |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |