- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计大数相乘和贪吃蛇 .doc
数据结构课程设计
学院: 计算机科学与工程学院
班级:
学生姓名:
设计题目:大数相乘贪吃蛇游戏
完成日期:2018年1月03曰
课程论文题目 大数和乘
程序设计思路
顺序存储两个大数分别于A[]、和B[]中。
把这个数组屮的每一位数字单独进行乘法运算。
找到最高位在数组中的项c[i ],然后依次输出各位上的数值。
通过主函数来调用其它各个函数。
数据结构设计
输入阶段采用一维数组A[],B[]。
二利用函数计算阶段调用一维数组c []。
功能函数设计:
找出每一项的所有项 首先找规律,如下图所示,
进行乘法
a[0]a[l]a[2] b[0] b [1] b[2] b [2]a[0]b[2]a[l]b[2]a[2] b[l]a[0]b[l]a[l]b[l]a[2 ] b[O]a[O]b[O]a[l ] b[0]a[2]
下标值和0 1 23 4
i=4 i=3 i=2 i=l i=0(循环时的i的数值)
即有
下标之和=^1+?2七由此限定条件可设计循环得出每一列的所有项。 故首先解决了找出每一列所有项的问题。
二、 计算从地位到高位的每一位的值。
显然考虑到进位的问题,故必须从低位到高位依次计算,对于每一列, 第一项除以10取余数,保留在原位存入从[],所得商进位存入mm。然后 对于第二列,第一项加进位mm,然后取余数存入su,在加第二项,取 余数存入从[],求商存入进位mm,直到该列所冇项参与运算到该列结束 时,求的最终的从[]和mm。依次进行后面的运算。
三、 找出反向存入结果从[]中的首项。
因为最高位一定不为零,故可以设计程序从c[]开始判断,当从[i】不等于 零时,即为最高项。
四、 设计主函数,依次调用如上函数。然后通过for循环
5、主函数
^include #dlib. h#in ng. h#defi ne N 100
void swap(ch ar 木 str, in t p, int q ) ; void men u() ; void m ul til () ;ch ar* LargeN um mul ti (c har*A, cha r*B);
void swap (char氺str, int p, int q)
{c har temp;w q)
temp;{temp = str[p];str [p] = str[q];str[q]
temp;
P++;
q—; }
}
char* LargeNu m_multi (ch ar* A, char* B)//大数相乘 {if((A[O])
{int m = strlen (A) ; int n = st rlen (B) ; in t i, j; cha
r 氺result;int
mul tiF lag; int ad dFlag;
resu 11 = (char 氺)mal loc
(s
izcof (char )*(m
+ n + 1));for ( m
+
n; i +
+)*(result +
i) = ’ 0 ’ ;result[m +
n]
=,\
0’ ; swap (A, 0,
m - 1) ; swap(B, 0, n
—
1) ;f or (i =
0;l;
i++)
{mu ItiFlag =
0;addFlag = 0;for (j m -
-1; j++)
{int w= (A[j]
-’0’)*(B[i] - ’0’
)
+ mu ItiFlag;mu
ItiFlag =w /
10;w = w % 10; int
k
=(resu It[i +
j]-
’O’)+ w + addElag ;addElag = k
/
10;re
sult[i + j]
二 k % 10 + ’ 0’ ;
}re suit[i + m ]
}re suit[i + m ] +=
} swap (result, 0 , m }el seif (A[0][0]== {LargeNum multi((A +
1), (B + 1));
TOC \o 1-5 \h \z }else if (A[0] =9’))
{print f ;Lar geNum_mult i ((A + 1), B);
} els e if (B[0] (A[0] = { printf LargeN
um multi (A, (B + 1));
r
else if (B[0] ==[0] = ’1”9’))
{ printf(0); menu () ; }
else if (A[0]二二 ’0 {printf C’O ) ;menu();
}
else if (B[0]== ’ ]==
{ printf (,z0,z) ; menu ();
} else if (B[0
原创力文档


文档评论(0)