河北工业大学计算机软件技术基础(VC)
课程设计任务书
一、题目:八进制整数的加减乘运算(22题)
二、目的与要求
1. 目的:
通过编程完成无符号八进制整数的加减乘运算,培养学生综合利用C++语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。
2. 基本要求:
1)要求用C++语言编程,在Visual C++环境下调试完成;
2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;
3)要求应用本课所讲授的程序设计语言知识来解决问题,使用教材前六章的内容来完成程序;
4)使用cin和cout来实现输入输出(使用scanf和printf的为不及格)。
三、设计方法和基本原理
1. 课题功能描述
本程序的功能:由用户输入两个八进制无符号整数,计算得到它们的和、差及乘积并输出。
2. 问题详细描述
程序运行时,提示用户输入两个八进制整数,如:
Please input number: 74562547
Please input number: 526347
程序计算后,输出运算结果:
74562547+526347=75311116
74562547-526347=74034200
74562547*526347=50473007031761
3. 问题的解决方案
注意:问题的解决方案有很多,下面给出的一种仅供同学们参考。
根据问题的描述,使用字符数组来存放输入的两个八进制无符号整数和运算结果,并按字符串进行输入和输出。
为实现程序的功能,可按照下述过程完成程序(仅供参考,可自行设计实现过程及方法):
l 输入两个数据到字符数组中
l 因输入时数据的高位在下标为0的元素中,所以要对两个字符数组中的字符串求逆序
l 调用相加函数求两个数的和,然后输出
l 调用相减函数求两个数的差,然后输出
l 调用相乘函数求两个数的乘积,然后输出
本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):
l 输入函数:完成一个八进制无符号整数的输入。输入数据到字符数组中,然后检验用户输入的数据是否合法(例八进制数中只能出现0~7),合法则返回,否则继续输入。
l 求字符数组中字符串的逆序:因输入时数据的高位在下标为0的元素中,为使运算时从0开始循环,所以要对两个字符数组中的字符串求逆序。
l 求两个数据(字符数组中)的和
l 求两个数据(字符数组中)的差
l 求两个数据(字符数组中)的乘积
我们知道,用户输入的数字7在字符数组中存放的是字符7的ASCII码值55。在运算中要将字符转换成对应的数字,运算后还要将其转换为字符存入字符数组,为此编写两个函数将字符与数字之间的转换作为独立模块,供上面的运算模块调用。例如(仅供参考):
l 字符转数字
l 数字转字符
主函数中控制函数调用完成输入、计算,并输出计算结果。
四、主要技术问题的描述
根据三问题的解决方案的分析,主要问题在于:
1) 单个字符与数字的转换
在字符转数字时,'0'~'9'只需减去'0'即可;同样的,数字转字符时,要考虑到10~15的转换与0~9不同。
2) 求两个数据(字符数组中)的和
从低位向高位逐位相加,每位数字相加时,实际是三个数字相加:两个加数的当前位数字和低位向当前位的进位。要将两个加数的数组元素(字符型)转换成相应的数字再相加,相加后转换为字符存入存放和的字符数组中。最后对存放和的字符数组求逆序,使得高位在在下标为0的元素中。
3) 求两个数据(字符数组中)的乘积
两个因子相乘时,当其中的两个数位相乘时,如a[i]*b[j],对应的乘积的数位应该是i+j。
五、创新要求
实现程序功能后,可进行创新设计:
1) 使用多文件,即主函数和各个函数分别存放在不同的.cpp文件中,在头文件中进行函数原型声明;
2) 画出程序的总体结构图,及主要功能模块的流程图;
3) 虽然进行的是两个无符号整数的运算,但相减后可能得到一个负数,考虑如果第1个数小于第2个数时如何得到一个负数差;
4) 本程序实现的是八进制无符号整数的运算,可扩充程序功能,由用户输入数据使用的进制:2、8、10、16,然后输入两个无符号整数,由程序计算并输出这两个数据的和、差与乘积。
六、课程设计的考核方式及评分方法
1.考核方式
(1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。
(2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。
2.评分方法
根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。
七、书写设计报告的要求(详细内容见“设计报告模板”)
八、说明:课程设计的有关文档,“设计报告模板”和“课程设计要求”请在下载任务书处下载。
[求助] 八进制整数的加减乘运算