资源描述:
《数据结构课程设计大数相乘等大学论文 .doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《数据结构》课程设计报告班级学号47/47姓名指导教师47/47课题一、大数相乘一、问题描述要求:输入两个较大的整数,进行乘法运算,能够通过程序计算出其正确的结果,并输出结果,使整数相乘不受计算机内存空间的限制。二、设计思路及步骤1、首先,要输入两个大数,所以在voidmultil()大数相乘操作函数中,定义两个字符型数组A[N]和B[N],其中,N为数组的最大长度,以字符串的形式来记录这两个较大的整数,定义字符型指针res记录这两个整数相乘结果的返回地址,用于输出结果。2、在大数乘法计算过程中,首先,将字符串各位的字符先转化为所对应的数字,然后再进行一系列的计算,由于整数乘法
2、计算是从低位到高位依次计算,所以为符合这一规律,先对两个大数字符串先进行逆序操作(voidswap(char*str,intp,intq)逆序操作函数),最后再将所得的结果进行逆序操作,并输出结果。3、在char*LargeNum_multi(char*A,char*B)大数相乘函数中,分别定义整型变量m和n分别记录数组A[N]和数组B[N]的长度,定义字符型指针变量result记录两大数相乘后的地址用于返回地址,result的最大长度为(m+n),定义整型变量multiFlag和addFlag分别表示乘法进位和加法进位,初始化均为0,在之后的运算过程中记录乘法进位和加法进位。
3、三、函数清单voidswap(char*str,intp,intq);//逆序操作函数voidmenu();//菜单函数voidmultil();//大数相乘操作函数char*LargeNum_multi(char*A,char*B);//大数相乘函数四、源程序代码#include#include#include#defineN100voidswap(char*str,intp,intq);//逆序voidmenu();//菜单voidmultil();//大数相乘操作47/47char*LargeNum_multi(
4、char*A,char*B);//大数相乘voidswap(char*str,intp,intq)//逆序{chartemp;while(p='1'&&A[0]<='9')&&(B[0]>='1'&&B[0]<='9'))//正&&正{intm=strlen(A);intn=strlen(B);inti;char*result;intmultiFlag;//乘积进位intadd
5、Flag;//加法进位result=(char*)malloc(sizeof(char)*(m+n+1));47/47for(i=0;i