简易四则运算计算器
计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。
17世纪初,西方国家的计算工具有了较大的发展。英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。项目设计目的
掌握模块的划分;
掌握结构体定义;
掌握栈的操作;
掌握函数的定义;
掌握栈的基本操作;
掌握VC的基本绘图库;
掌握鼠标的响应操作;
目设计内容
设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求
根据分析,系统要求实现以下几点基本功能:
可通过按钮输入数字、运算符;
能通过按钮实现退格、清除功能;
实现加、减、乘、除、开方运算功能;
实现括号运算;
显示运算结果;
良好的交互界面。
项目详细设计
功能模块图
根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器计算处理模块。计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。计算处理模块在按键控制模块中被调用执行。处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。
计算器记忆处理模块。记忆处理模块使计算其具有记忆功能。记忆当前输入的表达式,给出一个最后的运算结果。可以清楚部分或全部记忆的值。
图简易计算器模块图
数据结构简易计算器C语言代码.doc
该系统主要的数据有操作符集,用一维数组存放;存放操作符的优先级关系集,操作符的优先级关系用一个二维数组来体现;另外定义两个栈,一个用来存放操作符,一个用来存放操作数。
char ops[7]={'+','-','*','/','(',')','#'};
int cmp[7][7]={
{2,2,1,1,1,2,2},
{2,2,1,1,1,2,2},
{2,2,2,2,1,2,2},
{2,2,2,2,1,2,2},
{1,1,1,1,1,3,0},
{2,2,2,2,0,2,2},
{1,1,1,1,1,0,3}}; typedef struct
{
char elem[Stack_Size]; int top;
}SeqStack;
typedef struct
{
int elem[Stack_Size]; int top;
}SeqStackOperand;
系统流程图
图系统流程图
主要算法
比较运算符优先级:程序里的涉及到的运算符有7个,分别是‘+’,‘-’,‘*’,‘/’,‘(’,‘)’,‘#’,它们之间的优先级关系用一个二维数组来存放, int cmp[7][7]={ {2,2,1,1,1,2,2},
{2,2,1,1,1,2,2},
{2,2,2,2,1,2,2},
{2,2,2,2,1,2,2},
{1,1,1,1,1,3,0},
{2,2,2,2,0,2,2},
{1,1,1,1,1,0,3}};
主要代码
1. 计算器界面设计
利用VC绘图库函数设计一个相对友好的操作界面。关于VC绘图库的介绍在本书第二章。界面图像如下:
2. 当用户通过鼠标左键按下‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘.’,‘+’,‘—’,‘*’,‘/’,‘(’,‘)’,‘=’,这些键时,字符按点击顺序在输出文本框输出;当用户点击‘<—’,表示退一格操作;当用户点击‘=’,
作:初始化栈,判断栈空,取栈顶元素,入栈,出战,实现操作数的四则运
小结
知识点: VC绘图库
鼠标按键响应操作结构体定义顺序栈
顺序栈的基本操作:初始化栈、判断栈是否为空、取栈顶元素、入栈、出栈功能扩充
实现取对数、正弦、余弦等一些函数功能。
#include"stdio.h" #include"math.h" #include"stdlib.h" struct optrstyle { int top; char stack[20]; } struct opndstyle { int top; int stack[20]; } void main() { char ch; while(1) { printf("-----------------------------------------\n"); printf("|-----------欢迎来到速算24--------------|\n"); printf("|----------是否开始游戏?????------------|\n"); printf("|--------- 开始游戏请按'Y'-------------|\n"); printf("|--------- 退出游戏请按其他键-------------|\n"); printf("-----------------------------------------\n"); scanf("%c",&ch); if(ch=='Y' or ch=='y') { } else break; } } int EvaluateExpression() { // 算术表达式求值的算符优先算法。设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。 InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c = getchar(); while(c!='#' || GetTop(OPTR)!='#') { if(!In(c,OP))
# include
#include
} return(prec[i][j]); } void push1(linkstack *p,char c) //字符入栈 { p->e[p->top++]=c; } void push2(link *p,int num) //整数入栈 { p->c[p->top++]=num; } char gettop(linkstack *s) //读字符栈顶的元素{ char c; c=s->e[s->top-1]; return(c); } char pop1(linkstack *s) //字符出栈 { char c; c=s->e[--s->top]; return(c); } int pop2(link *N) //整数入栈 { int num; num=N->c[--N->top]; return(num); } int operate(int a, char oper,int b)//进行运算 { int num; switch (oper) {
#include
用c编写的,有各种检错的功能,用栈和优先级实现。头文件是:ss.h typedef union{float a;char b;} eletype; typedef struct{ eletype *base; eletype *top; int stacksize; }stack; stack * createStack(int); int isempty(stack *); int gettopStack(stack *,eletype *); int push(stack *,eletype); int pop(stack *,eletype *data); stack * createStack(int m) { stack *p; p=(stack *)malloc(sizeof(stack)); if(!p)return 0; p->base=(eletype *)malloc(m*sizeof(eletype)); if(!p->base)return 0; p->top=p->base; p->stacksize=m; return p; } int isempty(stack *lp) { if(lp->top > lp->base)return 0; else return 1; } int gettopStack(stack *lp,eletype *data) { while(isempty(lp))return 0; *data = *(lp->top - 1); return 1; }
int push(stack *lp,eletype data) { if(lp->top - lp->base >= lp->stacksize) { lp->base=(eletype *)realloc(lp->base,(lp->stacksize+1)*sizeof(eletype)); if(!lp->base)return 0; lp->stacksize++; } lp->top++; *(lp->top-1)=data; return 1; } int pop(stack *lp,eletype *data) { while(isempty(lp))return 0; *data = *(--lp->top); return 1; } Main函数的编写: #include "ss.h" #define SHU printf("fuck!! biao da shi cuowu!!!"); int n,x,y=0; float t=0; char c; char panduan(char,char); float yunsuan(float,char,float); int jiexi(char a[100]); float zhuan(char c[20]); main() { char a[100]; int m; char d,l; stack *optr; stack *open; eletype data; eletype * data1; char e[20]; float j,k;
C语言简单计算器实现四则运算可带括号```c #include
numStack[++(*top)] = num1 + num2; break; case '-': numStack[++(*top)] = num1 - num2; break; case '*': numStack[++(*top)] = num1 * num2; break; case '/': numStack[++(*top)] = num1 / num2; break; } int eval(char *expr) int numStack[100]; char opStack[100]; int numTop = -1; int opTop = -1; int num = 0; int sign = 1;
while (*expr != '\0') if (*expr >= '0' && *expr <= '9') num = num * 10 + (*expr - '0'); } else if (*expr == '+' , *expr == '-') numStack[++numTop] = num * sign; num = 0; sign = (*expr == '+') ? 1 : -1; } else if (*expr == '*' , *expr == '/') while (opTop >= 0 && priority(*expr) <= priority(opStack[opTop])) calculate(opStack[opTop--], numStack, &numTop, opStack, &opTop); } opStack[++opTop] = *expr; } else if (*expr == '(') opStack[++opTop] = '('; } else if (*expr == ')') while (opStack[opTop] != '(') calculate(opStack[opTop--], numStack, &numTop, opStack, &opTop);
#include<> double jjcc(double st[],int k){ for(int j=1;j
sum1=(st1[i]-48)+sum1*10; i++; if(st1[i]=='.'){ i++; while(st1[i]>47&&st1[i]<58){ k=k*; sum2=(st1[i]-48)*k+sum2; i++; } } st2[c]=sum1+sum2; } else{ st2[++c]=st1[i]; i++; sum1=0; c++; } } printf("%.4f\n",jjcc(st2,c+1)); }
C语言简易计算器的实现 计算器是一个常见的应用程序,用于执行数学运算。在C语言中,可以通过使用条件判断、循环和函数来实现一个简易计算器。下面是一个实现四则运算的简易计算器的示例代码: ```c #include
printf("请输入操作符:"); scanf(" %c", &operator); // 注意空格,以防止读取上一个输入时的换行符 float result; switch (operator) case '+': result = add(num1, num2); printf("结果为:%.2f\n", result); break; case '-': result = subtract(num1, num2); printf("结果为:%.2f\n", result); break; case '*': result = multiply(num1, num2); printf("结果为:%.2f\n", result); break; case '/': if (num2 == 0)
C语言编写的计算器源代码 ```c #include
} else s->data[++(s->top)] = value; } //出栈 double pop(Stack *s) if (s->top == -1) printf("Stack is empty. Cannot pop element.\n"); return -1; } else return s->data[(s->top)--]; } //获取栈顶元素 double peek(Stack *s) if (s->top == -1) return -1; } else return s->data[s->top]; } //判断运算符的优先级
int getPriority(char operator) switch (operator) case '+': case '-': return 1; case '*': case '/': return 2; case '^': return 3; default: return -1; } //执行四则运算 double performOperation(double operand1, double operand2, char operator) switch (operator) case '+': return operand1 + operand2;
C++语言编写;; include
shu++p = pi; i++; break; } iflinei == 'E' { shu++p = e; i++; break; } ifflag1 { h = h 10 + linei - '0'; flag = 1; i++; ifbiao_dian
ge++; } else break; } ifflag { ifbiao_dian { int r = 1; forint k = 1; k <= ge; k++ r = 10; h /= r; } shu++p = h; + ^乘方 Foff Enter= "< cout<<"M在前面结果的基础上继续计算,如:上次结果为10,现输入+2"< #include sum1=(st1[i]-48)+sum1*10; i++; if(st1[i]=='.'){ i++; while(st1[i]>47&&st1[i]<58){ k=k*0.1; sum2=(st1[i]-48)*k+sum2; i++; } } st2[c]=sum1+sum2; } else{ st2[++c]=st1[i]; i++; sum1=0; c++; } } printf("%.4f\n",jjcc(st2,c+1)); } 如有侵权请联系告知删除,感谢你们的配合! 简易四则运算计算器 计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展。英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。 项目设计目的 掌握模块的划分; 掌握结构体定义; 掌握栈的操作; 掌握函数的定义; 掌握栈的基本操作; 掌握VC的基本绘图库; 掌握鼠标的响应操作; 目设计内容 设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。 项目设计要求 根据分析,系统要求实现以下几点基本功能: 可通过按钮输入数字、运算符; 能通过按钮实现退格、清除功能; 实现加、减、乘、除、开方运算功能; 实现括号运算; 显示运算结果; 良好的交互界面。 项目详细设计 功能模块图 根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。 计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。 计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。 计算器计算处理模块。计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。计算处理模块在按键控制模块中被调用执行。处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。 计算器记忆处理模块。记忆处理模块使计算其具有记忆功能。记忆当前输入的表达式,给出一个最后的运算结果。可以清楚部分或全部记忆的值。 图简易计算器模块图 数据结构简易计算器C语言代码.doc 该系统主要的数据有操作符集,用一维数组存放;存放操作符的优先级关系集,操作符的优先级关系用一个二维数组来体现;另外定义两个栈,一个用来存放操作符,一个用来存放操作数。 charops[7]={'+','-','*','/','(',')','#'}; intcmp[7][7]={ {2,2,1,1,1,2,2}, {2,2,1,1,1,2,2}, {2,2,2,2,1,2,2}, {2,2,2,2,1,2,2}, {1,1,1,1,1,3,0}, {2,2,2,2,0,2,2}, {1,1,1,1,1,0,3}}; typedefstruct { charelem[Stack_Size]; inttop; }SeqStack; typedefstruct { intelem[Stack_Size]; inttop; }SeqStackOperand; 进制转换计算器c语言 以下是一个简单的进制转换计算器的C语言实现。此程序将用户输入的十进制数转换为二进制、八进制和十六进制数。 ```c #include int main() { unsigned int num; printf("请输入一个十进制数: "); scanf("%u", &num); printf("二进制: "); print_binary(num); printf("八进制: "); print_octal(num); printf("十六进制: "); print_hexadecimal(num); return 0; } ``` 注意,这个程序使用无符号整数(`unsigned int`)来处理输入,所以它不能处理负数。同时,二进制转换函数是自己实现的, 但八进制和十六进制的转换则直接使用了 `printf` 函数的 `%o` 和 `%X` 格式说明符。 此外,这个程序没有进行错误处理,例如检查用户是否输入了一个有效的十进制数。在实际应用中,你可能需要添加这些额外的检查。 最后,这个程序只能处理 `unsigned int` 类型可以表示的数。如果你需要处理更大的数,你可能需要使用其他的数据类型,或者实现一个更复杂的算法来处理大数。 C语言实现科学计算器的加减乘除平方开放运算 科学计算器是一种能够进行各种高级数学运算的工具。在这个项目中,我们将使用C语言实现一个简单的科学计算器,它能够执行加法、减法、 乘法、除法、平方和开方等运算。 首先,让我们来设计计算器的基本框架。我们可以使用一个循环来接 受用户的输入,并根据输入的指令执行相应的运算。我们可以使用一个变 量来存储当前的结果,并在每次运算完成后更新该变量。以下是一个简单 的代码框架: ```c #include //根据用户的指令执行相应的运算switch (operation) case '+': //执行加法运算 break; case '-': //执行减法运算 break; case '*': //执行乘法运算 break; case '/': //执行除法运算 break; case 's': //执行平方运算 break; case 'r': //执行开方运算 break; case 'q': //退出计算器 return 0; default: printf("无效的指令\n"); } } return 0; ``` 在代码中,我们使用了`switch`语句来根据用户的指令执行相应的运算。接下来,我们将详细说明每个运算的实现。 1.加法运算: 用户可以输入两个数,并将它们相加。我们可以使用`scanf`函数来获取用户输入,并使用加法运算符`+`执行相加操作。 ```c printf("请输入两个数:"); double num1, num2; scanf("%lf %lf", &num1, &num2); 一元稀疏多项式计算器c语言 下面是一个使用C语言编写的一元稀疏多项式计算器的示例代码。```c #include Node* insertNode(Node* head, int coefficient, int exponent) Node* newNode = createNode(coefficient, exponent); if(head == NULL) return newNode; } else Node* temp = head; while(temp->next != NULL) temp = temp->next; } temp->next = newNode; return head; } //打印多项式 void printPolynomial(Node* head) Node* temp = head; while(temp != NULL) printf("%dx^%d ", temp->coefficient, temp->exponent); temp = temp->next; if(temp != NULL) C语言制作简单计算器 一、工程介绍 工程效果图 编写这个程序的步骤如下: •获得用户要求计算机执行计算所需的输入。 •检查输入,确保输入可以理解。 •执行计算。 •显示结果。 三、解决方案 获得用户输入是很简单的,可以使用printf()和scanf()。下面是读取用户输入的程序代码: #include 作品:科学计算器 作者:欧宗龙 编写环境:vc++6.0 语言:c #include "stdafx.h" #include for(unsigned i=0;i #include #include break; if (flagl) { h 二h * 10 + (line[i] - ’0,); flag = 1; i++; if(biao_dian) ge++; } else break; if(flag) if (biao_dian) int r = 1; for (int k = 1; k <= ge; k++) r *二10; h /= r; shu[++p] = A(乘方)F(off) Enter(=)coutvv技j*于对数输入L2_5表示以2为底5前珮护Vvendl; cout«/z M(在前面结果的基础上继续计算,女口:上次结果为10,现输入+*2)"vvendl; coutvv〃D(清零并继续输入)z/vvendl: coutvv〃F(计算机关闭)z/vvendl; coutvv〃输入P就代表输入圆周率,输入E代表输入自然对数 z/vvendlvvendl; void print () system(〃color 2〃); coutvv〃欢迎使用本计算器"vvendl; coutvv〃输入一个字符串on,计算器开始启动z/vvendl; void if_start ()//是否启动计算器 { string start; print (); while(cin>>start) if(start !二〃on〃) cout<<〃您所输入的字符无效,请按照介绍的继续输入:〃《endl; continue; else break; } if (start 二二〃on〃) system(/z color 5”);// 颜色的处理 system("cls〃) ;// 刷屏 introduce () ;//对计算器的简要介绍cout<用c语言编写的加减乘除计算器程序
简易计算器C语言代码
进制转换计算器c语言
C语言实现科学计算器的加减乘除平方开放运算
一元稀疏多项式计算器c语言
c语言制作简单计算器
用c语言编写的计算器源代码
矩阵计算器代码实现 C语言
简易计算器C语言代码
C语言计算器源代码