VC课程设计报告模板-五进制长整数的加减运算

更新时间:2024-07-10 23:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编号:C21

河北工业大学计算机软件技术基础(VC)课程设计报告

学院 班级 姓名 学号 成绩 __ ___

一、 题目:

五进制长整数的加减运算 (C21)

二、设计思路

1、总体设计

1)分析程序的功能:通过此程序进行任意两个五进制长整数(位数不超过50)的加减乘运算。 2)系统总体结构:

本程序采用多文件,由主函数和4个分函数构成,功能是: ① 输入两个数据到字符数组中 ② 对两个字符数组中的字符串求逆序

③ 调用相加函数求两个数的和,再对所得字符串求逆序,然后输出 ④ 调用相乘函数求两个数的积,再对所得字符串求逆序,然后输出 ⑤ 调用相减函数求两个数的差,再对所得字符串求逆序,然后输出 2、各功能模块的设计:

① 输入函数:完成一个五进制无符号长整数的输入。输入数据到字符数组中,然后检验用户输入的数据是否合法(例五进制数中只能出现0~4),合法则返回,否则继续输入。 ② 求字符数组中字符串的逆序

③ 求和函数:求两个数据(字符数组中)的和 ④ 求积函数:求两个数据(字符数组中)的积 ⑤ 求差函数:求两个数据(字符数组中)的差 3、设计中的主要困难及解决方案

在这部分论述设计中遇到的主要困难及解决方案。 在这部分论述设计中遇到的主要困难及解决方案。 困难1 单个字符与数字的转换。

解决方案:在字符转数字时,'0'~'4'只需减去'0'即可;同样的,数字转字符时,只需加上'0'。

第1页/共8 页

编号:C21

困难2 应用多文件,在主函数中实现对多个分函数的调用,将程序的功能分解到不同的函数中去完成。

解决方案:将多个cpp文件放到一个工程中,用文件包含,通过#include “all.h”,来实现对分函数的调用。

4、你所设计的程序最终完成的功能

1)说明你编制的程序能完成的功能: 输入要加减乘的两个五进制长整数即显示其结果。 2)准备的测试数据及运行结果:输入两个五进制长整数: 12341342123 1232134 显示其结果为:

三、程序清单

如果是使用一个文件完成的程序,只需列出程序代码。

如果是使用多文件完成的程序,首先说明程序中的代码存放在哪些文件中,说明文件名(例如:本程序包含first.cpp、second.cpp、third.cpp和all.h四个文件);然后依次给出每个文件名及该文件清单,例如:

1、1.cpp文件清单 #include #include #include #include\void main() {

char a[50],b[50]; int i,j=0;

while(j==0) //利用\语句实现判断输入数字是否符合要求,并可多次输入

第2页/共8 页

{

j=1; //标签 input(a,b);

for(i=0;i<50;i++) {

if(a[i]>52||b[i]>52) //检验数字是否合法 {

cout<<\数字不合法,请重新输入:\ j=0;break; } } }

change(a,b); }

2、2.cpp文件清单 #include

void input(char a[],char b[]) {

cout<<\cin.getline(a,50);

cout<<\cin.getline(b,50); }

3、3.cpp文件清单 #include #include #include #include\

void change(char a[],char b[]) {

int i,N1=0,N2=0,n1,n2; int c1[50],c2[50];

strrev(a); //对字符串求逆序 strrev(b);

n1=strlen(a); //求字符长度 n2=strlen(b);

for(i=0;i

c1[i]=(a[i]-48)*pow(5,i); N1=N1+c1[i]; }

for(i=0;i

c2[i]=(b[i]-48)*pow(5,i); N2=N2+c2[i];

编号:C21

第3页/共8 页

}

strrev(a); //对字符串求逆序 strrev(b);

cout<

cout<

cout<

4、4.cpp文件清单 #include #include #include

void add(int N1,int N2) {

int M1=N1+N2,i;

char m1[100]={0}; //初始化数组

for(i=0;M1!=0;i++) //将十进制整数转化为五进制字符数组 {

m1[i]=M1%5; M1=M1/5;

m1[i]=m1[i]+48; }

strrev(m1); //对字符串求逆序 cout<

void minus(int N1,int N2) {

int M2=abs(N1-N2),i;

char m2[100]={0}; //初始化数组

for(i=0;M2!=0;i++) //将十进制整数转化为五进制字符数组 {

m2[i]=M2%5; M2=M2/5;

m2[i]=m2[i]+48; }

strrev(m2); //对字符串求逆序

if(N1

void multiply(int N1,int N2) {

int M3=N1*N2,i;

编号:C21

第4页/共8 页

编号:C21

char m3[60]={0}; //初始化数组

for(i=0;M3!=0;i++) //将十进制整数转化为五进制字符数组 {

m3[i]=M3%5; M3=M3/5;

m3[i]=m3[i]+48; }

strrev(m3); //对字符串求逆序 cout<

5、tou.h文件清单

void input(char a[],char b[]); void change(char a[],char b[]); void add(int N1,int N2); void minus(int N1,int N2); void multiply(int N1,int N2);

(说明:程序清单中一定要有注释。程序清单部分的行间距设为1行即可)

四、对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价。

基本完成了题目的要求,实现了两个长整数的相加,但仍有待提高,改善之处,需要不断学校完善。

2、对课题提出更完善的方案

可以通过进一步改进,实现两个带符号整数的运算;或更加创新,由用户输入数据使用的进制,然后输入两个整数,又程序计算并输出这两个数的和、差及积。

五、收获及心得体会

1、通过本次课程设计,自己在哪些方面的能力有所提高。

对数组有了进一步的学习提高,通过设计,是我在对c++的实际应用上有所提高,使自学能力和对所学知识的调用能力都有提升。

2、收获和心得体会。

由于知识上的缺陷会导致常常出现同样的错误,通过本次课程设计,我受益匪浅,学习了很多知识,应认真与人交流汲取知识,自我完善;新的知识可能导致程序的大量简化,思路更清楚结构,结构更简单,应不停的学习,并通过练习提高能力。也让我倍加体会到编程的乐趣,我将更加努力学习本门课程。

日期: 2011 年 06月 23日

第5页/共8 页

编号:C21

河北工业大学计算机软件技术基础(VC)

课程设计任务书

一、题目:五进制长整数的加减运算(B) 二、目的与要求

1. 目的:

通过编程完成无符号五进制长整数的加减运算,培养学生综合利用C++语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,使学生将所学知识转化为分析和设计简单实际问题进行程序设计的能力以及归纳总结建立程序文档的能力。

2. 基本要求:

1)要求用C++语言编程,在Visual C++环境下调试完成;

2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成; 3)要求应用本课所讲授的程序设计语言知识来解决问题,使用教材前六章的内容来完成程序;

4)使用cin和cout来实现输入输出(使用scanf和printf的为不合格); 5) 请仔细阅读“课程设计要求”,并按“设计报告模板”完成设计报告。

三、设计方法和基本原理

1. 课题功能描述

本程序的功能:输入两个五进制无符号长整数(位数不超过50),计算得到它们的和、差并输出。

程序运行时,提示用户输入两个五进制长整数,如: Please input number: 34210212341023034 Please input number: 2431143320112302 程序运行后,输出运算结果:

34210212341023034+2431143320112302=42141411211140341 34210212341023034-2431143320112302=31224014020410232

34210212341023034*2431143320112302=211443440323140413443203220440323 或,输入:

Please input number: 2431143320112302 Please input number: 34210212341023034 程序运行后,输出运算结果:

2431143320112302+34210212341023034=42141411211140341 2431143320112302-34210212341023034=-31224014020410232

2431143320112302*34210212341023034=211443440323140413443203220440323

2. 问题的解决方案

使用字符数组来存放输入的两个五进制无符号长整数及其运算结果,并按字符串进行输入和输出。过程如下:

? 输入两个数据到字符数组中,由于是字符型,输入的是243102,数组存储的是这

第6页/共8 页

编号:C21

些数字的ASCII码: a[0] 50 a[1] 52 a[2] 51 a[3] 49 a[4] 48 a[5] 50 a[6] 00 a[7] ? ? ? ? 因输入时数据的高位在下标为0的元素中,而计算时须从低位开始,为使运算时从0下标开始循环,首先对两个字符数组中的字符串求逆序。

? 编写函数求两个五进制数的和:从低位向高位逐位相加;每位数字相加时,实际

是三个数字相加:两个加数的当前位数字和低位向当前位的进位;得到该数位的和,如果>5,则向高位进位为1,和减去5;否则进位为0。求得的和低位在下标为0的元素中,求逆序,输出即为所求和。

? 编写函数求两个五进制数的差:要考虑借位。虽然进行的是两个无符号整数的运

算,但相减后可能得到一个负数。求得的差低位在下标为0的元素中(如果为负数,在下标为1的元素中),求逆序,输出即为所求差。

为实现模块化设计,除求字符串逆序、两个五进制数的和及两个五进制数的差等模块,还可设计如下模块:

? 输入函数:完成一个五进制无符号整数的输入。输入数据到字符数组中,然后检

验用户输入的数据是否合法(例五进制数中只能出现0~4),合法则返回,否则继续输入。

? 字符转数字ctoi:'0'~'4'只需减去'0'即可 ? 数字转字符itoc:只需加上'0'。

主函数中控制函数调用完成输入、计算,并输出计算结果。 提示:进行每位数字相加时(e为低位向当前位的进位): f=ctoi(a[i])+ctoi(b[i])+e;

if (f>=5) {e=1;c[i]=itoc(f-5);} else {e=0;c[i]=itoc(f);}

如果没有将字符与数字的转换作为函数,也可以为: f=a[i]-'0'+b[i]-'0'+e;

if (f>=5) {e=1;c[i]=f-5+'0';} else {e=0;c[i]=f+'0';}

四、创新要求

1) 2) 3) 4)

实现程序功能后,可进行创新设计(实现3项以上为创新):

求两个五进制无符号长整数的乘积(两个因子相乘时,当其中的两个数位相乘时,如a[i]*b[j],对应的乘积的数位应该是i+j)。

使用多文件,即主函数和各个函数分别存放在不同的.cpp文件中,在头文件中进行函数原型声明。

实现两个带符号五进制长整数的运算。

本程序实现的是五进制长整数的运算,可扩充程序功能,由用户输入数据使用的进制,然后输入两个整数,由程序计算并输出这两个数据的和、差及乘积。

五、课程设计的考核方式及评分方法

1.考核方式

(1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h

头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。

(2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检

第7页/共8 页

编号:C21

查运行结果是否正确,并回答教师提出的有关问题。

2.评分方法

根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。

六、书写设计报告的要求(详细内容见“设计报告模板”)

七、说明:课程设计的有关文档,“设计报告模板”和“课程设计要求”请在下载任务书处下载。

第8页/共8 页

本文来源:https://www.bwwdw.com/article/125.html

Top