(完整版)C语言毕业课程设计报告【简易计算器设计】
- 格式:doc
- 大小:119.00 KB
- 文档页数:42
C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。
通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。
2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。
3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。
提高程序开发能力。
二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。
2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。
3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。
4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。
5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。
四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。
简易计算器c 课程设计一、课程目标知识目标:1. 让学生掌握简易计算器C的基本结构,包括算术表达式、运算符和操作数。
2. 使学生了解计算器C中的数据类型及其在内存中的存储方式。
3. 让学生理解顺序结构程序设计的原理,并能够运用到简易计算器C的开发中。
技能目标:1. 培养学生运用计算器C编写简单程序的能力,如加减乘除运算。
2. 培养学生分析问题、解决问题的能力,能够针对特定需求设计相应的计算器功能。
3. 提高学生的编程实践能力,通过动手编写代码,实现简易计算器的功能。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发他们主动探索新知识的欲望。
2. 培养学生团队协作意识,学会与他人共同分析问题、解决问题,共同进步。
3. 培养学生严谨、细致的学习态度,养成良好的编程习惯,为今后的学习打下基础。
课程性质:本课程属于编程启蒙课程,以实践操作为主,结合理论讲解,让学生在动手实践中掌握编程基础。
学生特点:本课程面向的学生为具有一定计算机操作基础,对编程感兴趣的年级学生。
教学要求:教师需结合学生特点,以实例为主线,引导学生主动参与课堂,注重培养学生的动手实践能力和团队协作精神。
通过本课程的学习,使学生在掌握计算器C基本知识的同时,提高编程技能和综合素质。
二、教学内容1. 计算器C基本语法:介绍计算器C的数据类型、变量、常量的定义及使用,让学生掌握基本语法规则。
- 教材章节:第一章 计算器C概述- 内容列举:数据类型、变量定义、常量定义、运算符、表达式。
2. 算术表达式:讲解算术表达式的构成,以及加减乘除运算符的使用方法。
- 教材章节:第二章 算术表达式- 内容列举:算术表达式构成、运算符优先级、括号的使用。
3. 顺序结构程序设计:引导学生学习顺序结构程序设计,掌握程序的基本执行流程。
- 教材章节:第三章 程序结构与控制流程- 内容列举:顺序结构、程序执行流程、输入输出语句。
4. 简易计算器C程序设计:结合前面的知识,设计一个简易计算器C程序,实现加减乘除运算。
c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
c 简单计算器课程设计一、课程目标知识目标:1. 让学生掌握简单计算器的基本操作,包括开机、关机、清除屏幕、输入数字和运算符号。
2. 使学生理解加、减、乘、除四则运算的基本概念,并能够在简单计算器上进行正确的运算操作。
3. 帮助学生识别计算器上各个按键的功能,了解其对应的数学意义。
技能目标:1. 培养学生运用简单计算器解决实际问题的能力,如购物找零、计算面积等。
2. 提高学生进行四则运算的速度和准确性,提高计算效率。
3. 引导学生掌握计算器使用技巧,如连续计算、顺序计算等。
情感态度价值观目标:1. 培养学生对计算器的正确态度,认识到计算器是学习数学的工具,而非替代品。
2. 激发学生学习数学的兴趣,让学生在轻松愉快的氛围中体验数学计算的乐趣。
3. 培养学生的合作意识,使学生在小组讨论和互助学习中提高沟通能力,培养团队精神。
本课程针对小学三年级学生设计,结合学生年龄特点,注重激发兴趣和培养动手操作能力。
课程内容紧密联系教材,将目标分解为具体的学习成果,便于后续教学设计和评估。
通过本课程的学习,学生将能够熟练运用简单计算器,提高数学计算能力,培养良好的学习习惯和团队协作能力。
二、教学内容1. 计算器的基本结构:引导学生认识计算器的外观、各部分名称及其功能。
- 教材章节:第三章第1节《认识计算器》- 内容列举:计算器按键布局、显示屏、开机与关机、清除键等。
2. 四则运算操作:讲解加、减、乘、除四则运算在计算器上的操作方法。
- 教材章节:第三章第2节《计算器的四则运算》- 内容列举:按键输入、运算顺序、连续运算、计算结果读取等。
3. 计算器使用技巧:教授计算器的高级使用技巧,提高计算效率。
- 教材章节:第三章第3节《计算器使用技巧》- 内容列举:百分比计算、乘方运算、记忆功能等。
4. 实践应用:结合实际生活场景,让学生运用计算器解决实际问题。
- 教材章节:第三章第4节《计算器在实际生活中的应用》- 内容列举:购物找零、计算面积、体积、速度等。
课程设计实验报告题目 C/C++语言程序设计所在院系信息学院专业计算机科学与技术班级 12级计科班学生指导教师2014年9月24 日程序设计流程图:源代码:#include <stdio.h>#include<math.h> #include <stdlib.h>void fun1(){printf("\t\t\t*****************************\n");printf("\t\t\t$ 欢迎使用计算器 $\n");printf("\t\t\t$ $\n");printf("\t\t\t$ 1.加法 $\n");printf("\t\t\t$ 2.减法 $\n");printf("\t\t\t$ 3.乘法 $\n");printf("\t\t\t$ 4.除法 $\n");printf("\t\t\t$ 5.乘方 $\n");printf("\t\t\t$ 6.开方 $\n");printf("\t\t\t$ 7.八进制转换 $\n");printf("\t\t\t$ 8.十六进制转换 $\n");printf("\t\t\t$ 9.退出 $\n");printf("\t\t\t$ $\n");printf("\t\t\t*****************************\n");}void fun2(float x,float y,int c){float z;int n,i;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",x,y,z);break; case 3: z=x*y;printf("结果:%g*%g=%g\n",x,y,z);break; case 4: if(y==0)printf("错误!");else{z=x/y;printf("结果:%g/%g=%g\n",x,y,z);}break; case 5: n=x;for(i=1;i<y;i++){x=x*n;}printf("结果:%g\n",x);break;default:printf("请重新输入!");}}void fun3(float x,int c){float z;switch(c){case 6:if(x<0)printf("错误!");else{z=sqrt(x);printf("结果:%g\n",z);}break;default:printf("请重新输入!");}}void convert(int m,int c){char s[128];switch(c){case 7:printf("结果:%o\n",m);break;case 8:printf("结果:%x\n",m);break;default:printf("请重新输入!");}}void main(){for(;;){float x,y,z;int c,m;char h;fun1();printf("请选择运算:\n");printf("1\n2\n3\n4\n5\n6\n7\n8\n9\n"); printf("请输入运算方式前面的数字:\n");scanf("%d",&c);if(c==1||c==2||c==3||c==4||c==5){printf("输入两个数:");scanf("%f%f",&x,&y);fun2(x,y,c);}if(c==6){printf("输入一个数:");scanf("%f",&x);if(x<0)printf("错误!");elsefun3(x,c);}if(c==7||c==8){printf("输入一个数:");scanf("%d",&m);convert(m,c);}if(c==9){printf("<<<<<<<<<谢谢使用!>>>>>>>>>\n");} if(c>='a' && c<='z')printf("没有这个选择!\n");if(c>='A' && c<='Z')printf("没有这个选择!\n");}}。
c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
c语言实验报告计算器C 语言实验报告计算器一、实验目的本次 C 语言实验的主要目的是通过编写程序实现一个简单的计算器功能,加深对 C 语言基本语法、数据类型、控制结构和函数的理解和运用,提高编程能力和解决实际问题的能力。
二、实验要求1、实现基本的四则运算(加、减、乘、除)功能。
2、能够处理用户输入的合法表达式,并输出计算结果。
3、具备错误处理能力,如除数为 0 、输入不合法等情况。
三、实验环境本次实验使用的编程环境是 Visual Studio Code,编译器为 GCC。
四、算法设计与思路(一)整体思路首先,需要从用户那里获取输入的表达式。
然后,对表达式进行解析和计算。
在计算过程中,需要根据运算符的优先级进行相应的运算。
为了实现这个过程,可以使用栈来存储运算符和操作数。
(二)具体算法1、定义一个栈来存储运算符,另一个栈来存储操作数。
2、逐字符读取输入的表达式。
如果是数字字符,则将其转换为数字并压入操作数栈。
如果是运算符,则根据运算符的优先级进行处理。
如果当前运算符的优先级高于栈顶运算符的优先级,则将其压入运算符栈。
否则,从操作数栈中弹出两个操作数,从运算符栈中弹出一个运算符,进行相应的运算,并将结果压入操作数栈。
3、当表达式读取完毕后,依次从运算符栈和操作数栈中弹出元素进行计算,直到运算符栈为空,此时操作数栈中的唯一元素即为表达式的计算结果。
五、代码实现```cinclude <stdioh>include <stdlibh>include <ctypeh>//定义栈的最大容量define MAX_SIZE 100//定义操作符栈typedef struct {char itemsMAX_SIZE;int top;} OperatorStack;//定义操作数栈typedef struct {double itemsMAX_SIZE;int top;} OperandStack;//初始化操作符栈void initOperatorStack(OperatorStack stack) {stack>top =-1;}//初始化操作数栈void initOperandStack(OperandStack stack) {stack>top =-1;}//判断操作符栈是否为空int isOperatorStackEmpty(OperatorStack stack) {return stack>top ==-1;}//判断操作数栈是否为空int isOperandStackEmpty(OperandStack stack) {return stack>top ==-1;}//操作符入栈void pushOperator(OperatorStack stack, char op) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = op;} else {printf("Operator stack overflow!\n");exit(1);}}//操作数入栈void pushOperand(OperandStack stack, double num) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = num;} else {printf("Operand stack overflow!\n");exit(1);}}//操作符出栈char popOperator(OperatorStack stack) {if (!isOperatorStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operator stack underflow!\n");exit(1);}}//操作数出栈double popOperand(OperandStack stack) {if (!isOperandStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operand stack underflow!\n");exit(1);}}//获取操作符的优先级int getPriority(char op) {switch (op) {case '+':case '':return 1;case '':case '/':return 2;default:return -1;}}//计算表达式double calculate(char expression) {OperatorStack opStack;OperandStack numStack; initOperatorStack(&opStack);initOperandStack(&numStack);int i = 0;while (expressioni!='\0'){if (isdigit(expressioni)){double num = 0;while (isdigit(expressioni)){num = num 10 +(expressioni '0');i++;}if (expressioni ==''){double fraction = 01;i++;while (isdigit(expressioni)){num +=(expressioni '0') fraction; fraction /= 10;i++;}}pushOperand(&numStack, num);} else if (expressioni =='('){pushOperator(&opStack, expressioni);i++;} else if (expressioni ==')'){while (opStackitemsopStacktop!='('){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}popOperator(&opStack);i++;} else {while (!isOperatorStackEmpty(&opStack) &&getPriority(opStackitemsopStacktop) >= getPriority(expressioni)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}pushOperator(&opStack, expressioni);i++;}}while (!isOperatorStackEmpty(&opStack)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}return popOperand(&numStack);}int main(){char expression100;printf("Enter an expression: ");scanf("%s", expression);double result = calculate(expression);printf("Result: %f\n", result);return 0;}```六、实验结果与分析(一)测试用例及结果以下是一些测试用例及其对应的结果:1、输入:"2 + 3",输出:50000002、输入:"5 2",输出:30000003、输入:"3 4",输出:120000004、输入:"6 / 2",输出:30000005、输入:"2 + 3 4",输出:140000006、输入:"(2 + 3) 4",输出:200000007、输入:"5 / 0",输出:Division by zero!(二)结果分析从测试结果来看,程序能够正确计算基本的四则运算表达式,包括有括号的情况。
c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。
2. 学生能够运用所学知识,解决生活中简单的数学问题。
3. 学生了解计算器的发展历程,认识到科技对生活的影响。
技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。
2. 学生通过实际操作,培养动手能力和问题解决能力。
3. 学生能够运用计算器辅助学习,提高数学学习效率。
情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。
2. 学生在合作交流中,培养团队意识和沟通能力。
3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。
课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。
学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。
教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。
在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。
通过本课程的学习,使学生达到预期的学习成果。
二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。
2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。
3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。
4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。
教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。
第二课时:四则运算的操作方法,实践练习。
第三课时:计算器在数学学习中的应用,解决实际问题。
教材章节:《信息技术》第四章:计算器与计算机。
C语言简易计算器报告介绍本文将介绍如何使用C语言编写一个简易的计算器。
计算器可以进行基本的四则运算,包括加法、减法、乘法和除法。
设计思路1.首先,我们需要定义计算器的操作符和操作数。
操作符可以是+, -, *,/,操作数是两个整数或浮点数。
2.接下来,我们需要编写一个函数来接收用户输入的操作符和操作数,并进行相应的计算。
我们可以将这个函数命名为calculate。
3.在calculate函数中,我们根据用户输入的操作符,执行相应的计算操作,并返回计算结果。
如果用户输入的操作符不合法,我们将返回一个错误提示。
4.最后,我们在主函数中调用calculate函数,并显示计算结果。
代码实现下面是实现一个简易计算器的C语言代码:#include <stdio.h>float calculate(char operator, float operand1, float operand2) { float result;switch (operator) {case'+':result = operand1 + operand2;break;case'-':result = operand1 - operand2;break;case'*':result = operand1 * operand2;break;case'/':if (operand2 != 0) {result = operand1 / operand2;}else {printf("错误:除数不能为0\n");return-1; // 返回错误代码}break;default:printf("错误:无效的操作符\n");return-1; // 返回错误代码}return result;}int main() {char operator;float operand1, operand2;float result;printf("请输入操作符和操作数(格式为:操作数1 操作符操作数2):");scanf("%f %c %f", &operand1, &operator, &operand2);result = calculate(operator, operand1, operand2);if (result != -1) {printf("计算结果为:%f\n", result);}return0;}使用说明1.用户需要按照指定格式输入操作数和操作符,例如:2 + 3。
c 设计计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本原理和功能,掌握计算器的基本操作方法。
2. 学生能够运用计算器解决基本的数学运算问题,如加减乘除、百分比计算等。
3. 学生能够理解并运用计算器上的科学计算功能,如平方根、指数运算等。
技能目标:1. 学生能够熟练操作计算器,快速进行数值输入、计算和结果读取。
2. 学生能够运用计算器进行实际问题的计算,如购物找零、时间计算等。
3. 学生能够通过计算器解决一些简单的数学问题,培养解决问题的能力和逻辑思维能力。
情感态度价值观目标:1. 学生培养对计算器的正确使用态度,明白计算器是辅助工具,提高计算效率的同时,不应过度依赖。
2. 学生在合作交流中使用计算器,培养团队合作意识和分享精神。
3. 学生通过计算器的运用,增强对数学学科的兴趣,认识到数学与生活的紧密联系。
课程性质:本课程属于实践操作类课程,注重培养学生的动手操作能力和实际问题解决能力。
学生特点:学生处于小学高年级阶段,对计算器有一定了解,好奇心强,喜欢动手操作。
教学要求:教师应引导学生通过实践操作,掌握计算器的使用方法,将计算器与实际生活问题相结合,提高学生的数学应用能力。
同时,注重培养学生的团队合作意识和正确使用计算器的态度。
在教学过程中,关注学生的学习成果,及时进行教学评估和调整。
二、教学内容1. 计算器的基本结构:介绍计算器的各个部分及其功能,如显示屏、键盘、电源等。
教材章节:《计算器与计算法则》第一章内容列举:计算器按键的功能及操作方法。
2. 计算器的基本操作:教授加减乘除、百分比、平方根、指数等基本运算。
教材章节:《计算器与计算法则》第二章内容列举:各类运算的操作步骤及注意事项。
3. 计算器在生活中的应用:通过实例教授计算器解决实际问题,如购物找零、时间计算等。
教材章节:《计算器与计算法则》第三章内容列举:实际案例及解决方法。
4. 科学计算器的使用:针对高年级学生,介绍科学计算器的拓展功能,如三角函数、对数等。
c 课程设计简易计算器一、课程目标知识目标:1. 让学生掌握简易计算器的基本功能与操作,包括加、减、乘、除等四则运算。
2. 使学生理解计算器的工作原理,了解显示屏、键盘等组成部分及其作用。
3. 帮助学生掌握计算器的使用规范,如开关机、输入输出等基本操作。
技能目标:1. 培养学生运用计算器解决实际问题的能力,提高计算速度和准确性。
2. 培养学生通过观察、尝试、探索等方法,自主发现计算器操作技巧和功能特点。
3. 培养学生合作交流的能力,学会在小组讨论中分享观点,共同解决问题。
情感态度价值观目标:1. 激发学生对计算器的学习兴趣,培养良好的学习习惯和探究精神。
2. 培养学生尊重科学、严谨求实的态度,树立正确的价值观。
3. 培养学生团队协作意识,增强合作解决问题的能力。
本课程针对小学四年级学生,结合教材内容,以实用性为导向,注重培养学生的动手操作能力和实际问题解决能力。
课程目标明确,易于衡量,为后续教学设计和评估提供依据。
在教学过程中,教师应关注学生个体差异,因材施教,确保每位学生都能在课程中收获知识和技能。
二、教学内容本章节教学内容主要包括以下几部分:1. 计算器的基本结构:介绍计算器的显示屏、键盘、电池等组成部分及其功能。
2. 四则运算操作:详细讲解加、减、乘、除四则运算在计算器上的操作步骤。
3. 计算器操作规范:教授计算器的开关机、清屏、输入输出等基本操作规范。
4. 实际问题解决:结合教材实例,引导学生运用计算器解决生活中的实际问题。
5. 操作技巧与功能探索:指导学生探索计算器的其他功能,如百分比、乘方等,并分享操作技巧。
教学内容安排如下:第一课时:计算器的基本结构及操作规范介绍。
第二课时:四则运算操作教学,以教材为例题进行讲解和实操。
第三课时:实际问题解决,分组讨论并运用计算器解决生活中的数学问题。
第四课时:操作技巧与功能探索,学生自主探究计算器其他功能并分享。
教学内容与教材紧密关联,确保科学性和系统性。
完成日期年月日摘要课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。
其实认真学习一门语言并不难,关键是所追求的学习方法和途径。
通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。
同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。
我认为遇到难题并不可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。
现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。
人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。
现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。
这些大大方便了我们的生活给我们更多的选择和实现方式。
本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。
生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。
它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。
但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。
本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。
关键字:C语言程序设计基本算法高级编程语言思想和方法计算器Tubro c 2.0汉化版目录第1章选题的意义 (4)1.1自我介绍 (4)1.2选题 (4)第2章系统功能需求分析 (5)2.1系统的基本要求 (5)2.2数据结构和用法 (5)第3章系统设计 (6)第4章系统实现 (7)第5章总结 (8)第1章选题的意义1.1 自我介绍我的名字是彭东林,就读于石家庄铁道大学,电0905-2班,电气与电子工程分院。
c课程设计简单计算器一、教学目标本节课的学习目标包括:知识目标:学生需要掌握简单计算器的原理和基本操作,了解计算机内部是如何进行加减乘除等运算的。
技能目标:学生能够独立设计并实现一个简单计算器,提高逻辑思维能力和编程能力。
情感态度价值观目标:通过完成计算器设计,学生能够体会到编程的乐趣,增强对计算机科学的兴趣,培养创新精神和团队合作意识。
二、教学内容本节课的教学内容主要包括:1.简单计算器的原理介绍:讲解计算器的工作原理,让学生了解计算机是如何进行数学运算的。
2.编程语言的基本概念:介绍编程语言的基本语法和结构,为学生编写计算器程序打下基础。
3.计算器的设计与实现:引导学生通过编程实现一个简单计算器,培养学生的实际操作能力。
三、教学方法本节课采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解计算器的原理和编程语言的基本概念,为学生提供理论支持。
2.案例分析法:分析已有的计算器程序,让学生从中学习编程技巧和方法。
3.实验法:学生动手编写计算器程序,培养实际操作能力和创新能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供配套的教材,帮助学生学习计算器原理和编程语言。
2.多媒体资料:制作PPT等多媒体资料,生动形象地展示计算器原理和编程方法。
3.实验设备:准备计算机等实验设备,让学生能够顺利进行编程实践。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现评估:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和积极性。
2.作业评估:通过学生提交的作业,评估学生的编程能力和对知识的理解程度。
3.考试评估:设置期末考试,测试学生对简单计算器原理和编程语言的掌握程度。
六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节安排,逐步讲解计算器原理和编程语言知识。
2.教学时间:安排在正常的上课时间,确保学生能够专心学习。
c语言课程设计设计计算器一、课程目标知识目标:1. 让学生掌握C语言基础语法,包括变量声明、数据类型、运算符等;2. 让学生了解并运用顺序结构、选择结构和循环结构进行程序设计;3. 使学生掌握函数的定义和调用,理解模块化编程思想。
技能目标:1. 培养学生运用C语言编写简单计算器程序的能力;2. 培养学生分析问题、设计算法和解决问题的能力;3. 提高学生调试程序、查找并解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生的学习热情;2. 培养学生团队合作意识,提高沟通与协作能力;3. 培养学生面对问题积极思考、勇于克服困难的精神。
课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识设计计算器程序。
学生特点:学生为初中生,具备一定的逻辑思维能力,对编程有一定的好奇心,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过动手实践掌握C语言编程技能,培养解决问题的能力。
在教学过程中,注重激发学生兴趣,鼓励学生积极参与讨论和交流,提高学生的编程素养。
通过本课程的学习,使学生能够独立完成一个简单的计算器程序设计。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、表达式等;2. 程序控制结构:顺序结构、选择结构(if-else)、循环结构(for、while);3. 函数的定义和调用:理解函数的作用,学会编写和调用函数;4. 模块化编程:按照功能模块划分,编写独立的函数,提高程序可读性和可维护性;5. 计算器功能需求分析:加、减、乘、除等基本运算,以及括号支持;6. 算法设计:根据功能需求,设计相应的算法;7. 编程实践:根据算法,编写计算器程序,并进行调试优化;8. 测试与评估:对计算器程序进行测试,评估程序的正确性、健壮性。
教学内容安排和进度:1. 第1课时:C语言基础知识回顾;2. 第2课时:程序控制结构;3. 第3课时:函数的定义和调用;4. 第4课时:模块化编程;5. 第5课时:计算器功能需求分析;6. 第6课时:算法设计;7. 第7-8课时:编程实践;8. 第9课时:测试与评估。
C语言课程设计报告【简易计算器设计】1000字一、设计目的本设计旨在通过设计一个简易计算器,使初学者通过该计算器,了解C语言基本语法并且巩固数学运算知识。
二、设计内容(一)需求分析本计算器,要求能够完成一般的数学运算(加、减、乘、除),以及开平方、自然对数、正弦等常用函数的计算。
(二)功能设计1. 实现加、减、乘、除基本运算符的计算功能,实现数值运算。
2. 实现开平方、自然对数、正弦等常用函数的计算功能。
3. 提供菜单界面,使用户可以选择所需要的计算功能。
4. 能够对输入的数字进行异常处理,如输入非数字字符等。
(三)技术实现本计算器的实现基于C语言,主要涉及基本输入输出和函数的应用。
1. 输入输出功能:本计算器通过scanf函数实现用户输入,通过printf函数将结果输出。
2. 函数应用:本计算器通过调用数学库函数实现对开平方、自然对数、正弦等常用函数的计算。
(四)算法设计本计算器的算法主要基于基本的数学运算原理以及数学库函数的应用。
1. 加法运算:\t输入要加的两个数a和b\t输出a+b的结果2. 减法运算:\t输入要减的两个数a和b \t输出a-b的结果3. 乘法运算:\t输入要乘的两个数a和b \t输出a*b的结果4. 除法运算:\t输入要除的两个数a和b \t如果b=0,输出错误信息\t否则,输出a/b的结果\t5. 开平方:\t输入要开平方的数a\t如果a<0,输出错误信息\t否则,输出a的平方根\t6. 自然对数:\t输入要求自然对数的数a \t如果a≤0,输出错误信息\t否则,输出a的自然对数\t7. 正弦:\t输入要求正弦的角度a\t输出a的正弦值(五)程序设计以下是本计算器的主体代码:。
目录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数组中。
《C语言课程设计》报告设计题目:简单计算器设计学院名称:电子与信息工程学院专业:计算机科学与技术班级:计科09-1姓名:朱凯迪学号1 9指导教师:宋宏图定稿日期:2010年03月10日一、设计题目简单计算器设计二、设计要求在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。
三、设计目的①通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!②通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
四、设计思想及过程①由于需要使功能尽量模仿Windows下的计算器,而很多功能要以图形界面实现,故用Borland C++Builder编写。
所以用的是面向对象程序设计。
但因为这是C语言的课程设计,所以除了面向对象的使用以外,所有语法都是按照C语言的格式编写。
②采用工程模式,文件包括calc.h(运算主函数头文件,包括各运算符的操作以及其辅助函数)、Main.h(窗体类的声明头文件)、Calc.cpp(工程初始化文件)、Main.cpp(代码主文件,包括各空间操作的函数)以及一些其它附属文件,包括dll动态链接库。
③在参考了Windows里的计算器以后,决定在我的课程设计中实现:⒈0~9的数字输入功能(小数点除外)⒉实现加、减、乘、整除、取模、阶乘、位运算左移、x的y次方、与、异或、x立方、x平方运算功能,二进制、八进制、十进制、十六进制转换功能,正负转换功能,退格、归零等功能。
⒊数字显示最多为40位,超过即用科学表示法表示(例如1E50)。
⒋运算时因最高能对5000位的数字进行运算,故所有功能建立在自行编写代码的高精度运算基础上。
④在按键操作中,先判断用户按的是数字键还是功能键。
功能键分运算符键、进制转换键以及清空键。
然后记录下来用户当前的按键,然后对上次按的功能键键进行运算。
如按了1、+、5,再按任何功能键即对1+5进行运算。
如果按的是进制转换键,就记录当前进制,则在以后每次操作中,都将显示结果转换为当前进制再显示。
如:以下是按5以及*号时的函数代码⑤对于高精度,采用结构体struct high{intnum[MAXN];};的形式,数组的一个元素存一位。
个位为num[1],将符号存在num[0]之中。
⒈对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。
⒉对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。
⒊对于高精度乘法,用第二个数的各位乘以第一个数的各位。
然后错位相加,相当于小学生摆竖式。
最后将各位相乘的结果相加,逐位进位,判断符号、返回答案即可。
⒋对于高精度整除,采用各位从0~9枚举形式,如果此位与0~9相乘刚好小于等于相应数字,则为此位答案为这个数。
最后返回答案即可。
⒌对于高精度取模,则只需求出高精度整除,然后将数字减去整除的结果即可。
⒍对于n阶乘,做n次乘法,每乘一次,乘数减一。
⒎对于左移,虽然是建立在位运算基础上,但其效果只是乘以二,所以只需高精度乘以二即可。
⒏对于x的平方、立方、y次方,只需将x高精度相乘2次、3次或者更多次即可。
⒐对于与运算,先将两个数转换为二进制,然后对每位进行与运算,最后转换回十进制即可。
⒑对于异或运算,原理同与运算。
⑥对于进制转换,采用除n取余法。
将其转换为相应进制。
⑦对于清零键,按按键功能对actNum、ans、nowSym等变量清空或者减少一位即可。
⑧我对于程序容错性做了很大程度上的优化。
对于超出位数的运算会跳出“数字太大”提示。
对于各按键混合使用会导致的程序混乱用了极大程度上的优化,也就是说对于按键的随意性有很好的兼容性。
比如说可以直接按2再按*然后按=,就会算出2的平方。
⑨对于显示函数,先判断当前进制数,然后再将需要显示的数字转换为当前进制数再显示。
如果位数超过40,则取前几位,采用科学计数法显示。
⑩未能实现部分:小数部分。
由于时间关系,未能实现复制粘贴数字功能。
五、流程图六、运行过程打开Calc.exe,模拟Windows下的计算器功能。
①基本功能为输入数字,再输入运算符,然后输入运算符对应数字,按等号。
②输入数字,再输入运算符,输入等于号的结果为“当前输入的数字→运算符→当前输入的数字”。
可以调节正负号。
③输入“数字,运算符,数字,运算符...数字,运算符”亦可。
七、心得体会这次“简单计算器制作”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度,而且在一定意义上对面向对象设计的理解更加深刻了。
是我在编程路途上的一次质的飞跃。
而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。
当看着一个具有图形界面的计算器的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。
附源程序清单:①Calc.h(运算函数集头文件)#include<stdio.h>#include<string>#include<string.h>#define HIGH struct high#define MAXN 5000#define MAXSHOW 40#define key_num 0#define key_sym 1struct high{int num[MAXN];};HIGH ans, actNum, nowShow;char nowSym = 'N', lastSym = 'N';bool _isincMed = true, _lastKey = key_num;int jz = 10;bool _isbig(HIGH a, HIGH b){int i;for(i = MAXN - 1; i > 0; i--){if(a.num[i] > b.num[i]) return true;elseif(a.num[i] < b.num[i]) return false;}return false;}void copy(char *str, char *rstr, int op, int len) //将str的从op开始的len个字符复制到rstr中{int i = 0, j = op - 1;for(; i <= len - 1 || str[j] == '\0'; i++, j++) rstr[i] = str[j];rstr[i] = '\0';}void copyint(HIGH num, HIGH *rint, int op, int len) //将str的从op开始的len个字符复制到rstr中{int i = 1, j = op;for(; i <= len && j < MAXN; i++, j++) rint -> num[i] = num.num[j];}void initNum(HIGH *numb) //初始化{int i;HIGH tmp;memset(tmp.num, 0, sizeof(tmp.num));*numb = tmp;}int absCmp(HIGH a, HIGH b) //比较绝对值大小{int i;for(i = MAXN - 1; i > 0; i--){if(a.num[i] != b.num[i]) return (a.num[i] > b.num[i]);}return -1;}int getMed(HIGH a) //获取位数{int i, med;for(i = MAXN - 1; i > 0; i--)if(a.num[i] != 0){med = i;break;}if(i == 0) med = 1;return med;}void turnSym(HIGH *a) //变号{a -> num[0] = a -> num[0] == 0 ? -1 : 0;}void decMed(HIGH *a) //减去一位{int i, med = getMed(*a);if(med == MAXN - 1) med--;for(i = 1; i <= med; i++) a -> num[i] = a -> num[i + 1];a -> num[med] = 0;}void incMed(HIGH *a, int b) //加一位{int i, med = getMed(*a);HIGH r;initNum(&r);if(med < MAXSHOW){for(i = 2; i <= med + 1; i++) r.num[i] = a -> num[i - 1];r.num[1] = b;r.num[0] = a -> num[0];}else r = *a;*a = r;}HIGH mul(HIGH a, HIGH b) //高精度乘法{int i, j, k, ma, mb;HIGH tmpr, r, zero;initNum(&zero);initNum(&r);ma = getMed(a);mb = getMed(b);for(i = 1; i <= ma; i++){initNum(&tmpr);for(j = 1; j <= mb; j++){tmpr.num[j] = a.num[i] * b.num[j];}int tmpMed = getMed(tmpr);if(tmpMed + i > MAXN){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}for(k = 1; k < tmpMed; k++){tmpr.num[k + 1] += (tmpr.num[k] / 10);tmpr.num[k] %= 10;}if(tmpr.num[tmpMed] > 10)tmpMed = getMed(tmpr);if(tmpMed + i > MAXN){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}for(j = 1; j <= tmpMed; j++) r.num[j + i - 1] += tmpr.num[j];}for(i = 1; i < MAXN - 1; i++){r.num[i + 1] += (r.num[i] / 10);r.num[i] %= 10;}if(r.num[MAXN - 1] > 9){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowShow = zero;nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}if((a.num[0] == -1 && b.num[0] == -1) || (a.num[0] == 0&& b.num[0] == 0))r.num[0] = 0;else r.num[0] = -1;return r;}HIGH dec(HIGH a, HIGH b) //高精度减法{int i, med;HIGH r;HIGH inc(HIGH a, HIGH b);bool m = false;initNum(&r);if(a.num[0] == -1 && b.num[0] == -1) m = true;elseif(a.num[0] == -1){b.num[0] = -1;return inc(a, b);}elseif(b.num[0] == -1){a.num[0] = -1;return inc(a, b);}if(!absCmp(a, b)){a.num[0] = (a.num[0] == 0) ? -1 : 0;b.num[0] = (b.num[0] == 0) ? -1 : 0;return dec(b, a);}med = getMed(a);for(i = 1; i <= med; i++) r.num[i] = a.num[i] - b.num[i];for(i = 1; i <= med; i++){if(r.num[i] < 0){r.num[i + 1] -= 1;r.num[i] = 10 + r.num[i];}}if(m) r.num[0] = -1;return r;}HIGH inc(HIGH a, HIGH b) //高精度加法{int i;HIGH r, zero;bool m = false, err = false;initNum(&r);initNum(&zero);if(a.num[0] == -1 && b.num[0] == -1) m = true;elseif(a.num[0] == -1){a.num[0] = 0;return dec(b, a);}elseif(b.num[0] == -1){b.num[0] = 0;return dec(a, b);}for(i = 1; i < MAXN; i++) r.num[i] = a.num[i] + b.num[i];for(i = 1; i < MAXN - 1; i++){r.num[i + 1] += (r.num[i] / 10);r.num[i] %= 10;}if(r.num[MAXN - 1] > 9){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowSym = 'N';_lastKey = key_num;lastSym = 'N';nowShow = zero;return r;}if(m) r.num[0] = -1;return r;}HIGH div(HIGH a, HIGH b) //高精度整除{int i, j, ma = getMed(a), mb = getMed(b);HIGH r, tmpHigh, cmp, someZero, theone;initNum(&r);initNum(&theone);if(a.num[0] == b.num[0]) ;else r.num[0] = -1;a.num[0] = 0;b.num[0] = 0;for(i = ma - mb + 1; i > 0; i--){initNum(&tmpHigh);copyint(a, &tmpHigh, i, ma);initNum(&cmp);for(j = 0; !_isbig(cmp, tmpHigh); j++){cmp = inc(cmp, b);}theone.num[1] = j;if(_isbig(mul(theone, b), tmpHigh)) j--;r.num[i] = j;initNum(&someZero);someZero.num[i] = j;someZero = mul(someZero, b);a = dec(a, someZero);}return r;}HIGH mod(HIGH a, HIGH b) //高精度取模{int i, j;HIGH tmpans;tmpans = div(a, b);return dec(a, mul(tmpans, b));}String getHexStr(int a) //得到十六进制字符串{if(a == 10) return "A";elseif(a == 11) return "B";elseif(a == 12) return "C";elseif(a == 13) return "D";if(a == 14) return "E";elseif(a == 15) return "F";}int getHex(HIGH a) //十六进制取余{if(a.num[2] == 0) return a.num[1];else return a.num[2] * 10 + a.num[1];}HIGH hex(HIGH a) //转化十六进制{int i = 0, j;HIGH zero, r, sixteen;initNum(&zero);initNum(&r);initNum(&sixteen);sixteen.num[1] = 6;sixteen.num[2] = 1;if(a.num[0] == -1){initNum(&r);Application -> MessageBox("不能为负数!", "错误", MB_OKCANCEL);nowSym = 'N';_lastKey = key_num;lastSym = 'N';nowShow = zero;return r;}while(_isbig(a, zero))i++;r.num[i] = getHex(mod(a, sixteen));a = div(a, sixteen);if(getMed(r) > MAXSHOW){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowShow = zero;nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}}return r;}HIGH bajinzhi(HIGH a) //转化八进制{int i = 0, j;HIGH zero, r, eight;initNum(&zero);initNum(&r);initNum(&eight);eight.num[1] = 8;if(a.num[0] == -1){initNum(&r);Application -> MessageBox("不能为负数!", "错误", MB_OKCANCEL);nowSym = 'N';_lastKey = key_num;lastSym = 'N';nowShow = zero;return r;}while(_isbig(a, zero)){i++;r.num[i] = mod(a, eight).num[1];a = div(a, eight);if(getMed(r) > MAXSHOW){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowShow = zero;nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}}return r;}HIGH bin(HIGH a) //转化二进制{int i = 0, j;HIGH zero, r, two;initNum(&zero);initNum(&r);initNum(&two);two.num[1] = 2;if(a.num[0] == -1){initNum(&r);Application -> MessageBox("不能为负数!", "错误", MB_OKCANCEL);nowShow = zero;nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}while(_isbig(a, zero)){i++;r.num[i] = a.num[1] % 2;a = div(a, two);if(getMed(r) > MAXSHOW){initNum(&r);Application -> MessageBox("数字太大!", "错误", MB_OKCANCEL);nowShow = zero;nowSym = 'N';_lastKey = key_num;lastSym = 'N';return r;}}return r;}HIGH binToshi(HIGH a){int i, med = getMed(a);HIGH r, tmp, the1, tmp2, two, thetwo;initNum(&tmp);initNum(&tmp2);initNum(&the1);initNum(&thetwo);initNum(&two);two.num[1] = 1;thetwo.num[1] = 2;the1.num[1] = 1;initNum(&r);for(i = 1; i <= med; i++, tmp = inc(tmp, the1)) {tmp2.num[1] = a.num[i];r = inc(r, mul(tmp2, two));two = mul(two, thetwo);}return r;}HIGH and(HIGH a, HIGH b) //与{HIGH tmpa, tmpb, r;int med, meda, medb, i;initNum(&r);tmpa = bin(a);tmpb = bin(b);meda = getMed(tmpa);medb = getMed(tmpb);med = (meda > medb) ? meda : medb;for(i = 1; i <= med; i++)r.num[i] = tmpa.num[i] & tmpb.num[i];。