目录
第一章 系统功能说明 ..................................................................................................................... 1 第二章 程序结构 ............................................................................................................................. 2
2.1程序结构说明 .................................................................................................................. 2 2.2重要数据说明 .................................................................................................................. 2 2.3函数清单 .......................................................................................................................... 3 第三章 使用说明 ........................................................................................................................... 13
3.1安装手册 ........................................................................................................................ 13 3.2使用手册 ........................................................................................................................ 13 第四章 系统设计难点及其解决方法 ........................................................................................... 15
4.1 栈的四则运算 ............................................................................................................... 15 4.2 大数的加减乘除 ........................................................................................................... 15
4.2.1 大数的加法 ..................................................................................................... 15 4.2.2 大数的减法 ..................................................................................................... 15 4.2.3 大数的乘法 ..................................................................................................... 16 4.2.3 大数的除法 ..................................................................................................... 16
第五章 不足之处 ........................................................................................................................... 17
运动会分数统计系统 丽水学院C语言课程设计总结报告
第一章 系统功能说明
本程序可实现简单的计算机功能,对数字进行加减乘除的运算,N次方的运算,阶乘和累加,并能对错误的输入进行提示,对溢出进行判断以及继续运算和返回菜单的功能。
对小数的加减乘数是利用栈来实现的,因此与一般的须分步进行运算的计算器不同,该计算器可直接输入一串关于运算的表达式,并以#结束,可直接输出结果,无需人为的判断优先关系,进行分步运算,因此在运算操作上大大节省了用户的时间,减少了繁琐的步骤。
为了使得栈的运用更加灵活,对栈的四则运算也使用了继续运算的功能,并且可在任意位置插入该存储值进行需要的四则运算,这已经使得计算的功能更加完善。唯一的不足是对栈的溢出和错误输出难以判定,所以在输入之前必须仔细检查输入的格式是否正确。
N次方的运算是是直接调用库函数实现的。其中设置了一个判断的操作,若是第一次进行运算,需要输入两个数来实现a的b次方;若是原先已有运算结果存储在计算机内,可直接输入一个b,实现a的b次方的运算,通过该操作实现了继续运算的功能,同时对n次方的运算进行了溢出的判断,若是结果小于等于0,则说明一定溢出。
阶乘的运算运用的是累乘的原理,从1累乘到n实现阶乘的运算,在控制溢出方面巧妙的应用了上限来判断,由于阶乘的值会很大,对于32位的整形来说,累乘至12就是上限了,只需判断输入的值是否大于12即可。与N次方一样,对阶乘的处理也可以进行继续运算,若是之前的计算结果已有存储值,可直接进行阶乘计算。
累加的求和应用了公式(1+n)*n/2进行计算,在控制溢出的方面和N次方相同,对结果值进行判定是否小于等于0,同样的也可以进行继续运算,若是原先已有计算结果的存储将会直接输出累加结果,若是没有存储,需要按照提示输入一个数来实现累加求和。 本计算机的结构模拟了一个循环,实则是调用调用函数的嵌套,进入该程序首先展示的是主菜单界面,前四个选项分别为小数的加减乘数运算,N次方运算,阶乘运算,累加运算,该四个运算只可运用与小数的处理。第五个选项为大数的四则运算,可进入大数四则运算的二级菜单,在大数的二级菜单中可以选择大数加法,大数减法,大数乘法和大数除法最高可进行1000位的大数运算。主菜单的第六个选项为退出,该选项有个小小的缺陷,由于该结构的构建运用的是函数的调用,若是反复运算来返于两个菜单之间容易造成循环嵌套,可能在最后退出界面的时候需要输入多次退出才能达到退出的效果,因此在最后的退出时设置了退出的提示,若是选择了该选项还未退出,就需要多次输入该选项。在对小数的运算中需要继续运算,则可进入小数的二级运算菜单,小数的二级菜单里只有小数的四则运算,N次方运算,阶乘运算和累加运算。同样的大数的四则运算也可继续运算,不同的是由于大数运算结构存储困难,并且继续运算意义不大,所以未设置大数的继续运算,但可回到主菜单。
1
运动会分数统计系统 丽水学院C语言课程设计总结报告
第二章 程序结构
2.1程序结构说明
该计算器程序大体结构如图2-1所示。
程序结构如图所示,通过主菜单可直接进入栈的四则运算,N次方运算,阶乘运算和累加运算;另外也可通过主菜单进入大数菜单的界面,进而选择大数加法运算,大数减法运算,大数乘法运算或大数除法运算。
2.2重要数据说明
//----------全局变量-----------------
int N=0;//作为全局变量使用,用于存储运算结果
//----------函数结果状态代码----------------- #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0
#define OVERFLOW -2 //用于分配地址空间错误时的返回 #define MN 1000 //大数的存放位数上限
//----------定义函数类型,返回结果状态代码-------- typedef int Status;
2
运动会分数统计系统 丽水学院C语言课程设计总结报告
//-----------定义栈的元素类型------------ typedef int ElemType;
//---------栈的顺序存储表示------------------ #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10
//-----------顺序栈的定义,并定义栈顶和栈底元素----------- typedef struct{ ElemType *base; ElemType *top; int stacksize; }Stack;
2.3函数清单
//--------大数运算基本操作的函数原型说明-----------
1.int Inversion(char *str);//该函数为倒置函数,可引入一个数组将数组中元素倒置存放。
倒置函数如图2-2所示。
2.int numcomp(char *a,char *b);//该函数为字符串大小比较的函数,对个数组中元素进
3
运动会分数统计系统 丽水学院C语言课程设计总结报告
行逐一比较若相等返回0,不然返回第一次出现差异的两数之差。
该函数大体流程如图2-3所示。
3.int carry(char * num);//进位函数,引入数组,利用算法使得原先以ASCII存储的非0~
9的元素以0~9的字符存储。
该函数大体流程如图2-4所示。
4.int abdicate(char *num);//退位函数,引入数组,利用算法使得原先以ASCII存储的非
0~9的元素以0~9的字符存储。
4