C语言程序设计之简单计算器

合集下载

简易计算器C语言代码

简易计算器C语言代码

简易计算器C语言代码 Last updated on the afternoon of January 3, 2021简易四则运算计算器计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。

直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。

17世纪初,西方国家的计算工具有了较大的发展。

英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。

这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。

项目设计目的掌握模块的划分;掌握结构体定义;掌握栈的操作;掌握函数的定义;掌握栈的基本操作;掌握VC的基本绘图库;掌握鼠标的响应操作;目设计内容设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。

项目设计要求根据分析,系统要求实现以下几点基本功能:可通过按钮输入数字、运算符;能通过按钮实现退格、清除功能;实现加、减、乘、除、开方运算功能;实现括号运算;显示运算结果;良好的交互界面。

项目详细设计功能模块图根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。

计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。

计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。

计算器计算处理模块。

计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。

计算处理模块在按键控制模块中被调用执行。

c语言设计计算器课程设计

c语言设计计算器课程设计

c语言设计计算器课程设计一、课程目标知识目标:1. 学生能够掌握C语言基本语法和数据类型,特别是整型、浮点型的运用。

2. 学生能够理解并运用顺序结构、选择结构和循环结构进行程序设计。

3. 学生能够运用C语言的算术运算符,实现基本的数学运算功能。

技能目标:1. 学生能够编写简单的C程序,实现加、减、乘、除等基本计算功能。

2. 学生能够通过键盘输入数据,并处理输入异常。

3. 学生能够运用调试工具检查并修正程序中的错误。

情感态度价值观目标:1. 学生培养编程的兴趣,认识到编程在解决问题中的重要性。

2. 学生在学习过程中形成合作意识,培养团队精神。

3. 学生通过编程解决实际问题,体验成就感,增强自信心。

分析课程性质、学生特点和教学要求:本课程针对的是高一年级学生,他们对C语言已有一定的基础知识,具备基本的编程能力。

课程性质为实践性较强的编程课程,旨在让学生通过动手实践,掌握C语言编程技巧。

教学要求注重培养学生的实际编程能力,将理论知识与实际应用相结合。

课程目标分解:1. 学生能够独立完成一个简单的计算器程序,实现加、减、乘、除功能。

2. 学生能够运用所学知识对程序进行优化,提高计算器的运算效率和用户体验。

3. 学生通过课程学习,培养良好的编程习惯和解决问题的能力。

二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握C语言编程计算器的制作。

1. C语言基本语法和数据类型复习:回顾整型、浮点型等基本数据类型,强调其在计算器程序中的应用。

2. 运算符和表达式:详细介绍C语言的算术运算符,如加、减、乘、除等,并讲解表达式的构成和计算规则。

3. 控制结构:- 顺序结构:巩固顺序执行的概念,并应用于计算器程序。

- 选择结构:讲解if语句,实现计算器的不同运算功能。

- 循环结构:介绍for和while循环,实现重复计算功能。

4. 输入输出函数:教授scanf和printf函数的使用,实现用户与计算器程序的交互。

简易计算器 (1)

简易计算器 (1)

目录第一章:设计目的11.1课程设计目的.................................................................................. 错误!未定义书签。

1.2简易计算器设计的意义 (1)1.3系统的基本要求 (1)1.4功能设计 (3)第二章:功能描述 (3)2.1功能模块框图 (3)2.2相关功能介绍.................................................................................. 错误!未定义书签。

2.1系统模块机构框图 (4)第三章:总体设计 (5)3.1系统流程图 (3)3.2模块描述 (5)3.3函数声明 (5)第四章:程序实现 (5)4.1界面设计 (10)4.2计算界面 (11)4.3退出界面 (12)第五章:课程设计的结果展示 (13)第六章:参考文献................................................................................................. - 15 -第七章:课程设计总结......................................................................................... - 16 -第一章课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函等。

C语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

c语言简易计算器

c语言简易计算器

#include <stdio.h>char token;/*定义程序要使用到的一些函数*/void match( char expectedToken ) /*对当前的标志进行匹配*/{if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/ else{printf("cannot match\n");exit(1); /*匹配不成功,退出程序*/}}int low( void )/*用于计算表达式中级别最低的运算*/{int result = mid(); /*计算比加减运算优先级别高的部分*/while(( token == '+' ) || ( token == '-' ))if ( token == '+'){match('+'); /*进行加法运算*/result += mid();break;}else if ( token == '-'){match('-'); /*进行减法运算*/result -= mid();break;}return result;}int mid( void )/*用于计算表达式中级别较高的运算*/{int div; /*除数*/int result = high(); /*计算比乘除运算优先级别高的部分*/while(( token == '*' ) || ( token == '/' ))if ( token == '*'){match('*'); /*进行乘法运算*/result *= high();break;}else if (token == '/'){match('/'); /*进行除法运算*/div = high();if( div == 0 ) /*需要判断除数是否为0*/{printf( "除数为0.\n" );exit(1);}result /= div;break;}return result;}int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/{int result;if( token == '(' ) /*带有括号的运算*/{match( '(' );result = low();/*递归计算表达式*/match(')');}else if ( token>= '0'&&token<='9' ) /*实际的数字*/{ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/scanf( "%d", &result ); /*读出数字*/token = getchar(); /*读出当前的标志*/}else{printf("The input has unexpected char\n"); /*不是括号也不是数字*/exit(1);}return result;}main(){int result; /*运算的结果*/printf("*****************************************\n");printf("**Welcome to use this simple calculator**\n");printf("**Please input a multinomial like **\n");printf("** 6-3*(5-1)/2+14/7 **\n");printf("*****************************************\n");token = getchar(); /*载入第一个符号*/result = low(); /*进行计算*/if( token == '\n' ) /* 是否一行结束*/printf( "The answer is : %d\n", result );else{printf( "Unexpected char!");exit(1); /* 出现了例外的字符*/}scanf("%d",result);return 0;}。

C语言课程设计报告(多项式简单的计算器)

C语言课程设计报告(多项式简单的计算器)

沈阳航空航天大学课程设计报告课程设计名称:C 语言课程设计课程设计题目:多项式简单的计算器院(系):计算机学院专业:计算机科学与技术班级:14010106学号:2011040101258 姓名:崔雨濛指导教师:孙恩岩完成日期:2012年3月16日第1章概要设计 (2)1.1题目的内容与要求 (2)1.2总体结构 (2)第2章详细设计 (3)2.1主模块 (3)2.2多项式建立模块 (4)2.3计算模块 (5)2.4显示模块 (6)第3章调试分析 (7)3.1无法完整输出多项式 (7)3.2多项式中出现多余的项目 (7)3.3用户无法自行选择结束运行程序 (7)第4章使用说明与执行结果 (8)参考文献 (10)附录(程序清单) (11)第1章概要设计1.1题目的内容与要求课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定的单词。

要求:(1)输入多项式各项并建立多项式。

(2)输出多项式。

(3)两个多项式相加减,并输出结果多项式。

(4)采用VC环境进行调试运行。

1・2总体结构本程序主要分为四个模块(功能模块图见图1.1):主模块,多项式建立模块, 计算模块,显示模块。

主模块:输入多项式各项,建立多项式,输出多项式。

多项式建立模块:将输入的多项式各项以链表形式建立起来。

计算模块:比较两个多项式的系数和指数,合并同类项。

显示模块:显示输入的多项式及结果多项式。

图1.1功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图2.1所示。

图2.1主模块流程图2.2多项式建立模块注释:根据多项式的项数循环存入结构体中2.3计算模块比较两个多项式的系数和指数,合并同类项。

流程图如图 2.3所示图2.3计算模块流程图注释:具体比较方法如下:(1)qa->expn < qb->expnqa所指节点应为结果多项式中的结点,qa后移:qa=qa->next; qb不动。

C语言程序设计-简单的计算器

C语言程序设计-简单的计算器

- - . 《程序设计基础(C)》课程设计报告简易计算器设计学生姓名:学号:班级:指导老师:日期:309工作室设计目录一、设计目标2二、总体设计4三、详细设计6四、调试与测试12五、分析及结论13六、参考文献14【附录】16一、设计目标设计一个C语言程序(简单计算器设计)具体要求:在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

主要功能:进行+、-、*、/、三角函数、对数、幂等各项数学运算,能够进行进制间的相互转换与计算。

二、总体设计1、程序设计组成框图2、设计思路简单计算器的设计的程序中主要调用的函数有:数学函数的定义和I/O函数;设计思路和理念在于一切追求简便易操作原理,通过个人的构思和设计以及调试运行设计出这一款简单的计算器。

3、程序设计流程图三、详细设计1、功能函数①函数的功能:两数的+、-、*、/计算、求平均函数的入口:从main()的if(flag==1)开关结构中进入,即flag的值为1时进入该函数,从而进行该功能函数的计算。

函数调用关系:被主函数调用,由if()开关结构中进入。

函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。

2、功能函数②函数的功能: x的y次方的计算、两数的求余、以x为底y的对数函数的入口:从main()的if(flag==2)开关结构中进入,即flag的值为2时进入该函数,从而进行该功能函数的计算。

函数调用关系:被主函数调用,由if()开关结构中进入。

函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。

3、功能函数③函数的功能: 单个数值sin、cos、tan的计算,以e为底的指数、求绝对值函数的入口:从main()的if(flag==3)开关结构中进入,即flag的值为3时进入该函数,从而进行该功能函数的计算。

用c语言写的简单计算器

用c语言写的简单计算器

⽤c语⾔写的简单计算器这是⾃⼰在学习C语⾔,凭借⾃⼰的兴趣,将课本的知识运⽤后整理的关于C语⾔计算器的代码。

计算器实现的功能有:加、减、乘、除、求余。

功能简单,但对于初学者的我来说能把它写出来,排除每个错误依旧是个难题。

前后两种代码是由⾃⼰所学东西的质量决定的,如有错误,请前辈指出。

最初版本的计算器:1 #include<stdio.h>23int checkPassword();45int add(int x,int y);67int sub(int x,int y);89int multi(int x,int y);1011float quo(float x1,float y1);1213int com(int x,int y);1415int x,y;1617int result;1819int select;2021float result1;2223float x1,y1;2425int success,psw;2627int a;2829int i;3031int t;323334353637void main()3839 {4041 printf("请输⼊密码:\n");4243 i=0;4445do{46474849 scanf("%d",&a);50515253if( a!=1234 && i<2)5455 printf("请重新输⼊密码:\n");5657else5859 i=3;6061 i++;6263 }while( i<=2);6465if(a==1234)6667 {6869for(t=1;t!=6;t=select)7071 {72737576777879 printf("+=============================+\n"); 8081 printf("+======计=算=器=主=菜=单======+\n"); 8283 printf("+=============================+\n"); 8485 printf("+==========1、加法==========+\n"); 8687 printf("+==========2、减法==========+\n"); 8889 printf("+==========3、乘法==========+\n"); 9091 printf("+==========4、除法==========+\n"); 9293 printf("+==========5、求余==========+\n"); 9495 printf("+==========6、退出==========+\n"); 9697 printf("+=============================+\n"); 9899100101102103 printf("请输⼊你的选择:\n");104105 scanf("%d",&select);106107108109switch(select)110111 {112113114115case1:116117 printf("请输⼊两个数:\n");118119 scanf("%d%d",&x,&y);120121 result=add(x,y);122123 printf("%d+%d=%d\n",x,y,result);124125break;126127case2:128129 printf("请输⼊两个数:\n");130131 scanf("%d%d",&x,&y);132133 result=sub(x,y);134135 printf("%d-%d=%d\n",x,y,result);136137break;138139case3:140141 printf("请输⼊两个数:\n");142143 scanf("%d%d",&x,&y);144145 result=multi(x,y);146147 printf("%d*%d=%d\n",x,y,result);148149break;150151case4:152153 printf("请输⼊两个数:\n");154155 scanf("%f%f",&x1,&y1);156157 result1=quo(x1,y1);159 printf("%f/%f=%f\n",x1,y1,result1); 160161break;162163case5:164165 printf("请输⼊两个数:\n");166167 scanf("%d%d",&x,&y);168169 result=com(x,y);170171 printf("%d/%d=%d\n",x,y,result); 172173break;174175case6:176177break;178179default:180181 printf("请输⼊1~5之间的数\n"); 182183break;184185186187188189 }190191 }192193 }194195 }196197int add(int x,int y)198199 {200201int sum;202203 sum=x+y;204205return sum;206207 }208209int sub(int x,int y)210211 {212213int sub;214215 sub=x-y;216217return sub;218219 }220221int multi(int x,int y)222223 {224225int multi;226227 multi=x*y;228229return multi;230231 }232233float quo(float x,float y)234235 {236237float quo;238239 quo=x/y;240241return quo;243 }244245int com(int x,int y)246247 {248249int com;250251 com=x%y;252253return com;254255 }256257int checkPassword( int psw)258259 {260261if(psw==1234)262263 success=1;264265else266267 success=-1;268269return success;270271 }改版后的计算器:1 #include<stdio.h>23int yanzheng(int );45void caidan();67void jiafa(int,int);89void jianfa(int,int);1011void chengfa(float,float);1213void chufa(float,float);1415void mo(int,int);16171819void main(){2021int x,m;2223int y;2425float a,b;2627 printf("请输⼊密码:\n");2829 scanf("%d",&x);3031 m=yanzheng(x);3233if(m==1){3435 caidan();3637//int y;3839//float a,b;4041for(;y!=6;){4243 printf("请输⼊选项:\n"); 4445 scanf("%d",&y);4647if(y>=1 && y<6){4849 printf("请输⼊要运算的两个数:\n");5051 scanf("%f%f",&a,&b);5253 }54555657switch(y){5859case1 :jiafa(a,b);break;6061case2 :jianfa(a,b);break;6263case3 :chengfa(a,b);break;6465case4 :chufa(a,b);break;6667case5 :mo(a,b);break;6869case6 :break;7071default : printf("选项输⼊错误!请重试\n");break; 7273 }7475 }7677 }7879 }808182838485int yanzheng(int x){8687int i,m;8889for(i=1,m=0;i<3;i++){9091if(x==1234){9293 m=1;9495break;9697 }9899 printf("请重新出⼊密码:");100101 scanf("%d",&x);102103104105 }106107return m;108109 }110111112113void caidan(){114115 printf("+=============================+\n"); 116117 printf("+======计=算=器=主=菜=单======+\n"); 118119 printf("+=============================+\n"); 120121 printf("+==========1、加法==========+\n"); 122123 printf("+==========2、减法==========+\n"); 124125 printf("+==========3、乘法==========+\n"); 126127 printf("+==========4、除法==========+\n"); 128129 printf("+==========5、求余==========+\n"); 130131 printf("+==========6、退出==========+\n"); 132133 printf("+=============================+\n"); 134135 }136137138139void jiafa(int x,int y){140141int sum;142143 sum=x+y;144145 printf("%d\n", sum);146147 }148149150151void jianfa(int x,int y){152153int cha;154155 cha=x-y;156157 printf("%d\n", cha);158159 }160161162163void chengfa(float x,float y){164165float ji;166167 ji=x*y;168169 printf("%f\n", ji);170171 }172173174175void chufa(float x,float y){176177float shang;178179 shang=x/y;180181 printf("%f\n", shang);182183 }184185186187void mo(int x,int y){188189int mo;190191 mo=x%y;192193 printf("%d\n", mo);194195 }。

C语言简易计算器的实现

C语言简易计算器的实现

C语言简易计算器的实现C语言简易计算器是一种用于进行基本数学运算的程序。

实现一个简易计算器的关键是要能够解析用户输入的数学表达式,并将其转化为计算机可以理解的形式,然后进行计算,并输出结果。

下面是一个大约1200字以上的示例实现。

```c#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <ctype.h>#define MAX_SIZE 100//定义操作符的优先级int getPriority(char op)if (op == '+' , op == '-')return 1;else if (op == '*' , op == '/')return 2;elsereturn 0;//进行四则运算int calculate(int a, int b, char op)switch (op)case '+': return a + b;case '-': return a - b;case '*': return a * b;case '/': return a / b;default: return 0;}//将中缀表达式转换为后缀表达式void infixToPostfix(char* infixExp, char* postfixExp) char stack[MAX_SIZE];int top = -1;int j = 0;for (int i = 0; infixExp[i] != '\0'; i++)if (isdigit(infixExp[i])) { // 数字直接输出到后缀表达式while (isdigit(infixExp[i]))postfixExp[j++] = infixExp[i++];}postfixExp[j++] = ' ';i--;}else if (infixExp[i] == '(') { // 左括号压入栈stack[++top] = infixExp[i];}else if (infixExp[i] == ')') { // 右括号弹出栈内所有操作符并输出到后缀表达式,直到遇到左括号while (top != -1 && stack[top] != '(')postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}top--; // 弹出栈顶的左括号}else { // 操作符while (top != -1 && getPriority(stack[top]) >=getPriority(infixExp[i]))postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';stack[++top] = infixExp[i];}}while (top != -1) { // 将栈内剩余操作符弹出并输出到后缀表达式postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}postfixExp[j] = '\0';//计算后缀表达式的值int evaluatePostfix(char* postfixExp)char stack[MAX_SIZE];int top = -1;for (int i = 0; postfixExp[i] != '\0'; i++)if (isdigit(postfixExp[i])) { // 数字压入栈int num = 0;while (isdigit(postfixExp[i]))num = num * 10 + (postfixExp[i++] - '0');stack[++top] = num;i--;}else if (postfixExp[i] == ' ')continue;}else { // 操作符,弹出栈顶的两个数进行计算,并将结果压入栈int b = stack[top--];int a = stack[top--];int result = calculate(a, b, postfixExp[i]);stack[++top] = result;}}return stack[top];int maichar infixExp[MAX_SIZE];printf("请输入中缀表达式:");fgets(infixExp, sizeof(infixExp), stdin); // 读取用户输入//将中缀表达式转换为后缀表达式char postfixExp[MAX_SIZE];infixToPostfix(infixExp, postfixExp);printf("后缀表达式为:%s\n", postfixExp);//计算后缀表达式的值并输出int result = evaluatePostfix(postfixExp);printf("计算结果为:%d\n", result);return 0;```这个简易计算器的实现基于栈的数据结构。

C语言编程-简单的计算器

C语言编程-简单的计算器
double jieguo;
int i=0;
a[0]='$';
printf("请输入表达式,退出请输入q:\n\n");
scanf("%c",&x);
if(x=='q') break;
while(x!='\n')
{
a[++i]=x;
scanf("%c",&x);
}
a[i+1]='\0';
jieguo=jisuan(a);
}
j=j+1;
x=z;
if(a[j]=='.')
{
l=1;
i=j+1;
j=i+1;
while(a[j]>='0'&&a[j]<='9')
{j++;}
j--;
for(k=i;k<=j;k++)
{
n=pow(0.1,l);
l=l+1;
x=x+n*(a[k]-'0');
}
i=j+1;
}
else i=j;
shu.data[++shu.top].d1=x;
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
}
else if(a[i]=='*'||a[i]=='/')

C语言实现简单计算器程序

C语言实现简单计算器程序

C语⾔实现简单计算器程序这两天在看⼀个C语⾔写的计算器程序,做了不少的功夫,跟着作者⼀步步的进⾏完善,了解了许多细节性的东西,在此⾃⼰做个总结,加深⾃⼰对程序的印象,也算是梳理。

在该计算器程序,能进⾏加减乘除、sin、cos、exp等操作,同时能进⾏数值保存功能。

⽽该计算器使⽤逆波兰表⽰法。

即所有运算符都跟在操作数的后⾯,⽐如下列表达式:(1 - 2) * (4 + 5)采⽤逆波兰表⽰法表⽰为:1 2 - 4 5 + *逆波兰表达法中不需要圆括号,只要知道每个运算符需要⼏个操作数就不会引起歧义。

计算器程序实现很简单,具体原理如下:while(/* 下⼀个运算符或操作数不是⽂件结束指⽰符 */)if(/* 是数 */)/* 将该数压⼊到栈中 */else if (/* 是运算符 */)/* 弹出所需数⽬的操作数 *//* 执⾏运算 *//* 将结果压⼊到栈中 */else if (/* 是换⾏符 */)/* 弹出并打印栈顶的值 */else/* 出错 */在程序设计中,使⽤模块化思想,getop函数来进⾏读⼊,该函数返回⼀个标识,⽤来标识读⼊的是什么类型。

主循环体中根据该标识执⾏相应的动作。

以下是该程序:(我将所有函数和变量放在同⼀⽂件)#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXOP 100#define NUMBER '0' //标识读⼊的是数字#define NAME 'n' //标识读⼊的是字符串(函数名或⾮法字符串)#define ALPHA 26int getop(char []);void push (double); //压栈double pop(void); //出栈void clear(void); //清空栈void mathfnc(char []); //执⾏相应的数学函数sin、cos、exp等int main(void){int type;int i, var = 0;double op1, op2,v;char s[MAXOP];double variable[ALPHA];for (i = 0; i < ALPHA; i++) //初始化⽤于保存数值的变量数组variable[i] = 0.0;while ((type = getop(s)) != EOF) //读取输⼊{switch (type){case NUMBER:push (atof(s));break;case NAME:mathfnc(s);break;case '+':push (pop() + pop());break;case '*':push (pop() * pop());break;case '-':op2 = pop();push (pop() - op2);break;case '/':op2 = pop();if (op2 != 0.0)push (pop() / op2);elseprintf ("error: zero divisor\n");break;case '%':op2 = pop();if (op2 != 0.0)push (fmod(pop(), op2));elseprintf ("error: zero divisor\n");break;case '?': //打印栈顶元素op2 = pop();printf ("\t%.8g\n", op2);push (op2);break;case '=': //保存数值pop();if (var >= 'A' && var <= 'Z')variable[var - 'A'] = pop();elseprintf ("error: no variable name\n");break;case 'c':clear();break;case 'd': //复制栈顶元素op2 = pop();push(op2);push(op2);break;case 's': //交换栈元素op1 = pop();op2 = pop();push(op1);push(op2);case '\n':v = pop(); //v保存最后的⼀次结果printf ("\t%.8g\n", v);break;default:if (type >= 'A' && type <= 'Z')push(variable[type - 'A']);else if (type == '@') //输⼊的字符@表⽰最近⼀次结果值 push(v);elseprintf ("error: unknown command %s\n", s);break;}var = type;}return 0;}/* ----------------------------------------------------------- */#define MAXVAL 100int sp = 0; //标识栈顶double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf ("error: stack full, can't push %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf ("error: statck empty\n");return 0.0;}}void clear(void){sp = 0;}void mathfnc (char s[]){double op2;if (strcmp (s, "sin") == 0)push(sin(pop()));else if(strcmp (s, "cos") == 0)push(cos(pop()));else if(strcmp (s, "exp") == 0)push(exp(pop()));else if(strcmp (s, "pow") == 0){op2 = pop();push (pow(pop(), op2));}elseprintf ("error: %s not supported\n", s);}/* ----------------------------------------------------------- */#include <ctype.h>int getch(void);void ungetch(int);int getop(char s[]){int i, c;while ((s[0] = c = getch()) == ' ' || c == '\t') //过滤开头的空⽩字符;s[1] = '\0';i = 0;if (islower(c)) //判断是否为⼩写字母,也即读取由⼩写字母组成的字符串 {while (islower(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);if (strlen (s) > 1)return NAME;elsereturn c;}if (!isdigit(c) && c != '.' && c != '-')return c;if (c == '-') //⽤于判断是负数还是减操作{if (isdigit(c = getch()) || c == '.')s[++i] = c;else{if (c != EOF)ungetch(c);return '-';}}if (isdigit(c)) //收集整数部分while (isdigit(s[++i] = c = getch()));if (c == '.') //收集⼩数部分while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);return NUMBER;}/* ----------------------------------------------------------- *//** 引⽤以下两个函数是因为:程序不能确定它已经读⼊的输⼊是否⾜够 ** 除⾮超前多读⼊⼀些输⼊,在本程序中,读⼊⼀些字符合成⼀个数字 ** 所以在看到第⼀个⾮数字字符之前,已经读⼊的数的完整性是不能确定的* 由于程序要超前读⼊⼀个字符,这样就导致最后⼜⼀个字符不属于当前所要读⼊的数*/#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch (int c){if (bufp >= BUFSIZE)printf ("ungetch: too many characters\n");elsebuf[bufp++] = c;}该程序虽然简单,但是还是存在⼀些⼩⼩的问题,⽐如没有数据时进⾏pop的话,会打印栈中⽆数据同时返回数值0.0,在循环体中许多执⾏操作会将该数值保存到栈中,之后打印该值,⽤户体验度⽐较差。

C语言简单计算器的编写课程设计

C语言简单计算器的编写课程设计

2013-2014学年第二学期《高级语言程序设计》课程设计报告题目:简单计算器专业:数字媒体技术班级:13级1班姓名:邢洪波指导教师:王辉成绩:计算机与信息工程系二0一四年二月二十日1设计内容及要求1.1 利用本学期所学的《C语言程序设计》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。

在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。

在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。

1.2 运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。

程序基本功能要求实现完整,并有简单的验证。

程序还须有符合标准的程序设计报告。

2概要设计2.1系统流程图2.1 系统流程图2.2主要功能表2.2 主要功能表3设计过程或程序代码#include<stdio.h>#include<math.h>#include<malloc.h> /*malloc的头文件代表在内存中开辟存储空间*/double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;/*定义整型变量i,j,k,m,n,cnt,t1,t2,t3*/char nibo[50],zhan2[50];/*定义字符型数组*/double x,n,l,z=0,zhan3[50];/*定义双精度变量x,n,l,z,zhan3[50]*/typedef struct /*表示可以用con定义结构体变量*/{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;/*定义指针变量*/shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0') /*外循环是用while语句*/{if(a[i]>='0'&&a[i]<='9') /*内循环使用if-else语句*/{z=0;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;x=z;if(a[j]=='.'){l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+') /*对加法的定义*/{while(t2>0&&zhan2[t2]!='(') /*定义当加号和括号同时出现时*/{nibo[++t1]=zhan2[t2];/*将zhan2[t2]赋给nibo[++t2]*/nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-') /*对减法的定义*/{if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='(') /*对括号的定义*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/') /*对乘法和除法的定义*/{while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[ t2]=='#') /*逻辑运算*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#') /*逻辑运算中的或运算*/{while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}while(t2>0){nibo[++t1]=zhan2[t2]; /*将的zhan2[t2]值赋给nibo[++t1]*/nibo[t1+1]='\0'; /*碰到'\0'结束部分程序的运算*/t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#'){for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+') /*对加法的定义*/{zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-') /*对减法的定义*/{zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*')/*对乘法的定义*/{zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/') /*对除法的定义*/{zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^') /*对乘方的定义*/{zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#') /*对开方的定义*/{zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];/*返回值*/}void main(){for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");/*对乘方和开方的定义*/printf("请输入表达式无需输入 = 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n') /*碰到'\0'结束部分程序的运算*/{a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n");}}4设计结果与分析系统测试结果如下:根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。

C语言简单计算器原理——表达式求值(采用逆波兰表达式和栈结合)

C语言简单计算器原理——表达式求值(采用逆波兰表达式和栈结合)

C语⾔简单计算器原理——表达式求值(采⽤逆波兰表达式和栈
结合)
表达式的求解的关键是将其转换成逆波兰表达式(即后缀表达式,如1+2*3它的逆波兰表达式为123*+),在后缀表达式中已经考虑了运算符的优先级,
没有括号,只有操作数和运算符。

算术表达式转换成后缀表达式⽅法如下:
依次从键盘输⼊表达式的字符ch,对于每个ch:
(1)若ch为数字则直接将其放⼊后缀数组exp中并以#号标记数值串结束。

(2)若ch为"(",则直接将其压⼊字符栈op中。

(3)若ch为")",则将栈中"("以前的字符依次全部删除并将其放⼊后缀数组exp中,然后再将字符ch放⼊字符栈op中。

(4)若ch为"+"."-",则将栈中"("以前的运算符依次全部删除并将其放⼊后缀数组exp中,然后再将ch放⼊op栈中。

(5)若ch为"*"."/",则将栈顶连续的"*"."/"删除,并放⼊后缀数组exp中,然后将ch放⼊op栈中。

(6)若字符串str扫描完毕,则将栈中所有运算符删除并放⼊后缀数组exp,最后在后缀数组exp中便可得到后缀表达式。

在对后缀表达式求值时要⽤到⼀个数值栈st,在后缀数组exp中从头开始扫描,若是数字则将其放⼊数值栈中,
若遇到字符就进⾏两次退栈,并将运算结果再放⼊栈中,如此重复下去,最后当后缀数组扫描完后数值栈st的栈顶元素便是所要求的表达式的值。

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)扬州大学C语言课程设计报告题目一个简易计算器的设计与实现班级学号姓名指导教师成绩老师评语:第 2 页共 14 页第 3 页共 14 页一、系统调试…………………………………………8,9,10,11二、课程设计体会总结………………………………8,9,10,111 课程设计目的(1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。

通过课程设计可以达到综合设计C语言程序的目的。

(2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础!(3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。

2 课程设计内容目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。

(2)三角与反三角运算:如sinx,cosx等。

(3)指数对数运算:如log(x),lnx,e的x次方等。

(4)其他运算:如X!,x 的累加等。

(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。

(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。

使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表第 4 页共 14 页示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。

C语言程序设计之简单计算器

C语言程序设计之简单计算器

C语言程序设计之简单计算器C语言是一种广泛应用于操作系统、嵌入式系统和各种应用程序的高级程序设计语言。

在学习C语言的过程中,我们可以通过编写简单的计算器程序来巩固所学的知识。

计算器程序的基本功能是接收用户输入的两个数字和一个运算符,然后根据用户的选择进行相应的运算,最后输出结果。

下面是一个简单的计算器程序的实现。

首先,我们需要包含头文件stdio.h和stdlib.h,以便使用标准输入输出函数和动态内存分配函数。

#include <stdio.h>#include <stdlib.h>接下来,我们定义一个函数menu,用于显示计算器的菜单选项。

用户可以选择进行加法、减法、乘法或除法运算,或者退出程序。

void menprintf("====================================\n");printf("简单计算器\n");printf("1. 加法\n");printf("2. 减法\n");printf("3. 乘法\n");printf("4. 除法\n");printf("5. 退出程序\n");printf("====================================\n");printf("请选择您要进行的运算:");然后,我们定义一个函数add,用于执行加法运算。

该函数接收两个参数:num1和num2,分别表示用户输入的两个数字。

float add(float num1, float num2)return num1 + num2;类似地,我们可以定义函数sub、mul和div,用于执行减法、乘法和除法运算。

float sub(float num1, float num2)return num1 - num2;float mul(float num1, float num2)return num1 * num2;float div(float num1, float num2)if (num2 != 0)return num1 / num2;} elseprintf("错误:除数不能为0!\n");return 0;}最后,我们在主函数中调用这些函数,实现计算器的功能。

C语言课程设计(计算器)

C语言课程设计(计算器)

目录1 前言 (2)2 需求分析 (2)2.1要求 (2)2.2任务 (2)2.3运行环境 (2)2.4开发工具 (2)3 概要设计 (2)3.1系统流程图 (3)3.2查询函数流程图 (4)4 详细设计 (8)4.1分析和设计 (8)4.2具体代码实现 (9)5 课程设计总结 (25)参考文献 (25)致谢 (26)1 前言编写一个程序来实现算术计算器。

通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1.2.3等数字, +、--、*、等运算符号), 然后将其信息存入文件中。

输入一个算术计算式, 就在屏幕上显示结果。

2 需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交), 程序要有注释。

2.2任务(1)定义一个结构体类型数组, 输入0~9及+、--、*等符号的信息, 将其信息存入文件中;(2)输入简单的加减乘除算术计算式, 并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。

2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。

图3.1系统流程图3.2查询函数流程图4 详细设计4.1分析和设计在程序的开头部分定义了结构替类型, 用来存放按钮信息struct s_button /*按键的结构体*/{int sx,sy,ex,ey;char *head;int press;}button[17]; /*图表按键数*/char far *vid_mem;static int tx=32,ty=3; /*静态变量*/float v1=0.0,v2=0.0;用输入函数input()来输入按键放在s_button数组中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

攀枝花学院学生课程设计(论文)题目:简易计算器学生姓名:葛肪瑜学号:************ 所在院(系):计算机学院专业:计算机科学与技术班级:10计本(1)班指导教师:陈三清职称:讲师2011年6月25日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书课程设计(论文)指导教师成绩评定表目录目录 ......................................................................................................................... I V 摘要 .. (V)1 绪论 ....................................................................................................................... V I1.1 课程设计背景 (VI)1.2 需求环境 (VI)1.3 课程设计思路 (VI)2 课程设计概要 (2)3 程序结构和各模块分析 (3)3.1菜单操作模块 (3)3.1.1 fun1函数功能 (3)3.1.2 功能实现代码 (3)3.2 加减乘除运算模块 (3)3.2.1 fun2函数功能 (3)3.2.2 功能实现代码 (4)3.3 乘方和开方运算模块 (4)3.3.1 fun3函数功能 (4)3.3.2 功能实现代码 (4)3.4 进制转换运算模块 (5)3.4.1 convert函数功能 (5)3.4.2 功能实现代码 (5)3.5 求模运算模块 (5)3.5.1 fun4函数功能 (5)3.5.2 功能实现代码 (6)3.6 退出模块 (6)3.6.1代码功能 (6)3.6.2 功能实现代码 (6)4 程序调试 (7)4.1 操作界面 (7)4.2 加减乘除运算 (7)4.3 乘方和开方运算 (9)4.4 进制转换运算 (10)4.5 求模运算 (11)4.6 退出 (12)5 课程设计总结 (12)参考文献 (13)附录:源代码 (14)摘要一直以来,C语言都是在国际上广泛流行的通用编程语言,它既具有高级语言的特点,又具有低级语言的些特点;既可用于编写系统软件又可用于编写应用软件。

虽然说近二十年来计算机技术取得了长远的进步,各种编程语言不断地涌现出来,但是C语言功能强大,使用灵活,即使是在科技快速发展的二十一世纪,仍展现出了强大的生命力,为社会的高度信息化,特别是在信息技术和网络技术领域做出了十分重要的贡献。

本文介绍了用C语言编写一个简易计算器。

实现数学上对浮点数加、减、乘、除、乘方、开方、求模以及进制转换的运算。

利用这个程序可以方便的进行日常性的小规模运算,小巧简易,是个实用的工具。

关键词:程序设计,计算器,C语言,函数,循环1 绪论1.1 课程设计背景日常生活中我们经常会遇到一些小型数据计算的问题,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。

在C语言当中通过定义模块函数,并在主函数中进行调用从而实现数据的运算。

通过与用户之间的交互,可以在操作界面上实现对各种运算的选择和程序的控制。

在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。

由于设计水平和知识方面的匮乏,本次课程设计还存在缺点和不足,希望大家提出宝贵的意见,互相交流以期提高。

1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:①硬件要求:一台计算机。

②软件配置:WINDOWS系统、c/c++程序设计学习与实验软件1.3 课程设计思路做计算器最主要的就是实用性,要简单,便于操作。

程序的界面要方便与用户之间的交互。

并以设计的要求为基础,进行了创新,增加了对进制转换运算的支持,这就大致的确定了程序的几个模块。

然后对每个模块进行设计,再整合起来,由此一个简洁美观的计算器就建立起来了。

2 课程设计概要在设计程序的时候,考虑到计算器的功能,我按照其功能划分为几个模块,在程序开始后,可以进行选择,到自己希望进行操作的模块中去。

有了具体的模块之后,在设计程序的时候有更方便了,同时也有法可依,不会造成混乱。

具体分为:加减乘除运算、乘方开方运算、进制转换运算、求模运算和退出五个模块。

具体的模块关系如表2-1:流程图详解:首先用户运行程序,进入开始菜单,由用户对所要进行的运算做出选择。

当选择运算方式时,程序将调用对应的运算模块,对用户输入的数据进行处理,并输出结果,随后,当用户确认结果后,程序将清屏,并返回开始菜单,由用户继续进行选择。

当选择退出时,程序将调用退出模块,显示“拜拜!谢谢使用哈!”,并退出程序。

图2-1 程序流程图3 程序结构和各模块分析3.1菜单操作模块3.1.1 fun1函数功能在这个模块中,为了方便用户的使用,我们定义了一个菜单调用函数,将整个菜单尽量做到简易美观。

程序开始时,由用户对所要进行的运算进行选择。

3.1.2 功能实现代码程序如下:void fun1() /* 定义菜单调用函数*/printf(" ***********************菜单**********************\n");printf(" * *\n");printf(" * 设计人:葛肪瑜*\n");printf(" * *\n");printf(" *************************************************\n");printf(" * 1.加法运算*\n");printf(" * 2.减法运算*\n");printf(" * 3.乘法运算*\n");printf(" * 4.除法运算*\n");printf(" * 5.乘方运算*\n");printf(" * 6.开平方运算*\n");printf(" * 7.转换为2进制*\n");printf(" * 8.转换为8进制*\n");printf(" * 9.转换为16进制*\n");printf(" * 10.求绝对值*\n");printf(" * 11.退出*\n");printf(" *************************************************\n");printf("\n");printf(" 输入你想要进行的运算(1~11):\n" );printf("\n");}3.2 加减乘除运算模块3.2.1 fun2函数功能当用户的选择为1~4时,程序将调用fun2函数(加减乘除运算模块),该函数首先对用户的选项进行匹配,当匹配为1时,进行加法运算;为2时,进行减法运算;为3时,进行乘法运算;为4时,进行除法运算。

最后将所得结果输出。

3.2.2 功能实现代码算法:采用swich语句的分支机构,对用户选择的加减乘除运算进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void fun2(float x,float y,int c) /* 定义加减乘除模块函数*/{float z;switch(c){case 1: z=x+y;printf("输出结果为: %g+%g=%g\n",x,y,z);break; /* 进行加法运算*/case 2: z=x-y;printf("输出结果为: %g-%g=%g\n\n",x,y,z);break; /* 进行减法运算*/case 3: z=x*y;printf("输出结果为: %g*%g=%g\n",x,y,z);break; /* 进行乘法运算*/case 4: if(y==0) printf(" 输入错误!"); /* 如果分母为0则输出“输入错误!”*/ else{z=x/y;printf("输出结果为:%g/%g=%g\n",x,y,z);}break; /* 进行除法运算*/ default: printf(" 输入错误!");}}3.3 乘方和开方运算模块3.3.1 fun3函数功能当用户的选择为5或6时,程序将调用fun3函数(乘方和开方运算模块),该函数首先对用户的选项进行匹配,当匹配为5时,进行乘方运算;为6时,进行开方运算。

最后将所得结果输出。

3.3.2 功能实现代码算法:采用swich语句的分支机构,对用户选择的乘方开方运算进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void fun3(float x,int c) /* 定义乘方开方模块函数*/{float z;switch(c){case 5: z=x*x;printf("输出结果为: %g\n",z);break; /* 进行乘方运算*/case 6: if(x<0) printf(" 输入错误!"); /* 如果x小于0则输出“输入错误!”*/ else{z=sqrt(x);printf("输出结果为: %g\n",z);}break; /* 进行开方运算*/ default: printf(" 输入错误!");}}3.4 进制转换运算模块3.4.1 convert函数功能当用户的选择为7~9时,程序将调用convert函数(进制转换运算模块),该函数首先对用户的选项进行匹配,当匹配为7时,将把用户所输入的数据转换为2进制数;为8时,将把用户所输入的数据转换为8进制数;为9时,将把用户所输入的数据转换为16进制数。

最后将所得结果输出。

3.4.2 功能实现代码算法:采用swich语句的分支机构,对用户所要进行转换的进制进行匹配,匹配后将进行相应的运算并输出结果。

程序如下:void convert(int m,int c) /* 定义进制转换模块函数*/{char s[128];switch(c){case 7: itoa(m, s, 2);printf("输出结果为: [%s]\n",s);break; /* 转换为二进制数*/case 8: printf("输出结果为:%o\n",m);break; /* 转换为8进制数*/case 9: printf("输出结果为:%x\n",m);break; /* 转换为16进制数*/default: printf(" 输入错误!");}}特殊函数介绍:itoa()函数的头文件是# include <stdlib.h>,该函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。

相关文档
最新文档