一、引言
本课程设计给我提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实践有机的结合起来,锻炼分析解决实际问题的能力,提高学生适应实际,实验编程的能力。
(1)进一步巩固和复习C程序设计的基础知识;
(2)培养学生结构化程序、模块化程序设计的方法和能力;
(3)提高程序调试技巧、软件设计能力和代码规范化等素质
二、系统功能
实现大整数(假定不超过五十位)的加、减、乘、除
三、程序总体设计
(1)模块划分和层次结构:本课程设计中,运用了模块划分和层次结构。实现代码时,并非只用一个main函数,将所有的功能给予main函数,而是通过多个子函数来实现的,在本课程设计中,每个功能都被划分到相对应的子函数,对其进行实现。最后,在main函数中对这些子函数进行调用,实现课程设计的要求。层次为先次再主,先实现每个子函数的功能,再集合到main函数中,实现全部的功能。
(2)函数原型清单:
1.int max(int x,int y) /返回两个数中的较大值/
2.void addition(char num1[],char num2[]) /* 加法*/
3.void subtration (char num1[],char num2[]) /* 减法*/
4.void multiplication (char num1[],char num2[]) /* 乘法*/
5.int charmax(char num1[],char num2[]) /* 取两个字符串中的较小长度,取该长度,比较大小*/
6.void sub(char num1[],char num2[]) /* 进行减法运算*/
7.void divide(char num1[],char num2[]) /* 除法*/
(3)程序总体框架:在main函数中调用每个子函数。
四、功能模块函数设计和调试
1.在int max(int x,int y)这个函数中,通过比较大小,返回较大值;
2.在void addition(char num1[],char num2[])这个函数中,先考虑输入的两个数是否都是0,是,输出0;否,再将两个数保存进字符串数组,然后再分别逆序存进两个整型数组,将两个整型数组的每一位相加存进第三个整型数组,利用循环,从下标为1的开始,每一位加上前一位除以10的商,从下标为0的开始,每一位取该位除以10的余数,最后逆序从第一个不为0的位开始输出。
3.在void subtration(char num1[],char num2[])这个函数中,先考虑输入的两个数是否都是0,是,输出0;否,再将两个数保存进字符串数组,判断第一个字符串数组是否大于或等于第二个字符串数组,否,结果先输出“-”号,然后再将大的存进第一个整型数组,小的存进第二个整型数组,判断将两个整型数组的每一位相减存进第三个整型数组,利用循环,从下标为0的开始,将每一位小于0的加上10,下一位减去1 ,最后逆序从第一个不为0的位开始输出。
4.在void multiplication(char num1[],char num2[])这个函数中,先考虑输入的两个数是否至少有一个是0,是,输出0;否,再将两个数保存进字符串数组,然后再将大的字符串存进第一个整型数组,小的字符串存进第二个整型数组,
接着将第一个数组的第i位与第二个数组的第j位相乘的积加上第三个数组的第i+j位存进第三个数组的i+j位,利用循环,从下标为0的开始,将每一位大于或等于10的下一位加上该位除以10的商,该位取除以10的余数,最后逆序从第一个不为0的位开始输出。
5.在int charmax(char num1[],char num2[])这个函数中,如果第一个字符串大于或等于第二个字符串,则返回1,否则返回-1。
6.在void sub(char num1[],char num2[])这个函数中,第一个字符串取n长度减去第二个字符串,然后利用循环,从下标为n-1逆序开始,将每一位小于‘0’的加上10,前一位减1。
7.在void divide(char num1[],char num2[])这个函数中,如果第二个数为0。那么输出“ERROR!”,如果第一个数小于第二个数,那么输出“0…第一个数”,然后利用函数int charmax(char num1[],char num2[])和void sub(char num1[],char num2[])得到商,再判断是否整除,是,则只输出商;否,输出“商…余数(即现在的字符串数组)”。
六、课程设计总结
测试数据1:
000
0
0
测试数据2:
13851
-98674684564
-98674670713
测试数据3:
534341
/
0
ERROR!
测试数据4:
13513531
A
315315
13828846
13198216
4261019027265
42…270301
测试数据5:
2222
A
1111
3333
1111
2468642
2
测试数据6:
00035435235543484534534354134846
A
000000542748649653443434343543
35435778292134187977788478389
35434692794834881090919791303
19232426241377933881221468471565587347404923711399378
65288…261704910519592932899462
通过此次课程设计,我更加扎实的掌握了有关C语言设计方面的知识,再设计中遇到了很多问题,因为程序中要考虑的细节问题较多,很容易忽略,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露了前期我在这方面的知识欠缺和经验不足实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从
事职业工作前一个必不少的过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。我意识到,在今后的学习实践过程中,一定要不懈努力,不能遇到问题就想到退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘。
七、参考资料
C程序设计教程