2010-2011第二学期。
数据结构》课程设计。
题目1: 大数相乘
题目2: 马的遍历
学院: 计算机学院
姓名: 陈浩
学号: 099074140
班级: 软件091班
评阅教师: 汤亚玲
2024年 6月9日。
安徽工业大学。
一、目的。加深对《数据结构》课程所学知识的理解,进一步巩固c语言语法规则。学会编制结构清晰、风格良好、数据结构适当的c语言程序,从而具备解决综合性实际问题的能力。
题目一:大数相乘。
目录:系统功能分析3
基本要求3功能需求3
开发工具3程序说明3
大数相乘总括4
源程序4测试与结论5
创新及难点6
程序设计总结心得体会6
正文内容如下:
一、 系统功能分析。
功能分析:大数相乘可以实现对两个任意大的正数相乘。
用户可以通过本程序对无法实现的两数进行相乘,其意在方便用户,方便群众。
二、1编写基本目的要求:
分析程序开发过程的具体问题,构架程序的功能,同时使该程序的使用者对本程序有一定的了解,为实现功能的编码做好基础,对数据结构有一个更深入的了解。
1、背景:a.开发的软件系统的名称:大数相乘。
b.本项目的任务提出者汤亚玲;开发者:陈浩。
2、 功能需求:
根据大数相乘的实际需求,分析系统应该设计的功能,其中应该包括对于超过整型大数的输入,存储,运算,输出。实现乘法的一般功能。
3、数据需求:
运行环境及知识要求:
运行环境要求:windows xp/visita/7
知识要求:1 熟悉vc++6.0编译系统。
2 熟悉aiscc
3 熟练掌握字符与数字之间的转换。
4﹑分析及实现简介:
由于大数相乘问题相对简单,我只写了一个主函数实现了其功能。大数用字符数组存储,用aiscc数字之间转换进行运算。
二、程序的说明:
首先定义两个字符数组存储两个大数,在定义两个数组,一个用与保存结果,另一个为辅助只用,具体的思想是a b 两个大数用b的个位一次乘a的每一位结果保存在辅助数组temp中,在进位取余得到正常的10进制数,用sum数组的temp的求和,用flag标记,以便temp的错位相加。用while可以控制大数运行的次数。
三、模块分析及源程序:
大数相乘问题。
#include<>
#include<>
#define max 10000
int main()
int n,i,j,t,s;
char a[100],b[100],temp[105]=,sum[max]=;定义两个字符数组a,b用来存储大数 temp为辅助*/
int lena,lenb,flag,m=0;
printf("输入运算的次数n:");
scanf("%d",&n输入运算的次数n*/
while(n--)
m++;flag=0设置标志flag*/
printf("输入将要运算的两数a,b;用回车键相分隔");
scanf("%s%s",a,b输入两要相乘的大数用回车键相分隔*/
lena=strlen(a);
lenb=strlen(b求两数的长度*/
for(j=lenb-1;j>=0;j--)
for(t=lena,i=lena-1;i>=0;i--,t--)
temp[t]=(a[i]-48)*(b[j]-48); 依次从低位开始求的b的某一位与a的乘积*/
for(t=lena;t>=1;t--)
if(temp[t]>9)
temp[t-1]+=temp[t]/10;
temp[t]%=10进位取余*/
for(s=lena+lenb-flag,t=lena;t>=0;t--,s--)标志flag确保错位相加*/
sum[s]+=temp[t];
for(t=lena;t>=0;t--)
temp[t]=0辅助数组复位志零*/
for(s=lena+lenb;s>=1;s--)
if(sum[s]>9)
sum[s-1]+=sum[s]/10;
sum[s]%=10s 进位取余*/
flag++;
sum[lena+lenb+1]='0';
for(s=0;s<=lena+lenb;s++)
sum[s]=sum[s]+48数值还原,48对应‘0’字符*/
for(s=0;sif(sum[0]==48)
for(t=0;t<=lena+lenb-s;t++)
sum[t]=sum[t+1高位有零向前移位,防止输出的数第一位为零*/
else break;
printf("case %d:",m输出结果;
printf("%s * s = s",a,b,sum);
if(n!=0)
printf("");
for(s=lena+lenb+1;s>=0;ssum字符数组复位志零等待下一轮while循环*/
sum[s]=0;
return 0;
测试与结论:
进过我的反复测试,只要是两个正整数相乘结果正确,程序稳定性好,可以运算任意大是数。
运行结果抓图如:”
四、创新及难点:
1、创新:只有一个主函数,while循环实现大数相乘,使得程序简短高效。
使用temp辅助字符数组,降低了运算是难度,程序清晰易懂。
系统在操作提示上较多,用户与系统间的信息交互比较方便,便于操作。
2、难点:要用一个大数的各个位去乘一个大数并把的到的数反向存储且使得数字每一位不大于9。
因为相乘每一位权重不一样,要错位相加。得数求余,变换。
四、心得体会:
通过为一学期的数据结构课程设计实验课使我了解到了一个程序开发的过程,虽然规模不大,但为我以后的编程学习打下了基础。在编程的过程中,我体会到了学习编程的辛苦,为了一个算法的实现而思考,为了一个小小的编译错误而花时间去寻找,这需要很大的毅力和耐心,而且要有良好的思维,这才使得我完成这个任务,也使我感到一分喜悦,毕竟自己完成了一个有模有样的程序。于此,我也发现自己的一些不足,良好的编程习惯的养成,坚定的毅力和耐心仍是我要加强的,同别人的交流也是必须的,这样才能不断使我进步。
题目二:马的遍历。
目录:流程图8
系统功能分析9
基本要求9程序说明9
创建标志矩阵函数模块9
巡游子函数模块9
赋值子函数模块11
主程序函数模块11
测试运行与结论12
程序设计总结心得体会13
流程图。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...