继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

C语言程序设计-大整数的四则运算01

我是盘盘
关注TA
已关注
手记 14
粉丝 1
获赞 7

一、引言

本课程设计给我提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实践有机的结合起来,锻炼分析解决实际问题的能力,提高学生适应实际,实验编程的能力。

(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程序设计教程

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP