加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数问题(一)

发布时间:2020-12-14 03:02:49 所属栏目:大数据 来源:网络整理
导读:大数问题(一) ? 转载 ▼ 在某些情况下,我们必须处理位数相当多的一个整数,例如100位数,系统内建的资料型态不管是int、long? int、long? long? int等,位数显然都不够用。? 要解决这个问题,我们必须自己用程式来处理,最简单的方法,就是模仿人工处理数

大数问题(一)

?

转载

在某些情况下,我们必须处理位数相当多的一个整数,例如100位数,系统内建的资料型态不管是int、long?int、long?long?int等,位数显然都不够用。?要解决这个问题,我们必须自己用程式来处理,最简单的方法,就是模仿人工处理数字的方式,也就是把数字拆成一个位数一个位数,这个时候我们可以用一个阵列来完成这个动作。?不过,这样一来,所有对于这种超大整数的处理,包括输入一个大数、两个大数相加、印出一个大数等等,都需要我们自己写一个函数来处理。?至于这个阵列要用什么样的资料型态,因为两个一位数相乘也不过才81,所以我们可以用?char?的阵列来记录一个超长整数,如:

char?n[300];

就可以记录300位数的资料。?前面提到大数的输入及输出,都需要我们自己写函数来处理,我们分别把它们定名为?Input()?及?Print()?

1?#include?<stdio.h>??

2?#include?<string.h>??

3?#define?LEN?3004?int??Input(?char??n[])??

5?{??

6?}??

7?void??Print(??n[])??

8?{??

9?}??

10??main()??

11?12???a[LEN];??

13??Input(a);??

14??Print(a);??

15?}??

上面第三行?#define?LEN?300?的意思,即是定义一个常数叫做?LEN?,而它的值是300,下面用到LEN的地方,在执行的时候便会自动变成300。?这样写的好处是,如果我们有好个地方都用到300这个数字,但是后来发现不够用了,要将它改成1000,这个时候要一行一行改,还可能不小心漏掉,如果用?#?define?定义一个常数,则只要改一个地方就行了。?接下来我们看到Input()函数要做的步骤:

1?把该阵列的每一格数字归零。

2?将使用者输入的数字以字串方式存到另一个字串。

3?计算该字串的长度。

4?从该字串的尾端(即个位数)开始一个一个位数往左,将它转换成数字后,存到阵列对应的格子中。

我们把上面提到的字串及超长整数的阵列做一个比较:

字串

s[0]

s[1]

s[2]

s[3]

s[4]

s[5]

s[6]

s[7]

s[8]

s[9]

'1'

'2'

'3'

'4'

'5'

'6'

0

×

×

×

?

阵列

n[0]

n[1]

n[2]

n[3]

n[4]

n[5]

n[6]

n[7]

n[8]

n[9]

6

5

4

3

2

1

0

0

?

上面提到的Input()?的程式码可以写成:

16?17?18??s[LEN];??

19??i,?l;??

20??for?(i=0;?i<LEN;?i++)??

21????n[i]=0;??

22?if?(scanf(?"%s"?,?s)<1)?return??-1;??

23??l=strlen(s);??

24?(i=0;?i<l;?i++)??

25????n[i]=s[l-i-1]-?'0'?;??

26??0;??

27?}??

上面的Input()?函数为了要得知是否有资料输入,所以我们利用传回值0?代表输入成功,传回-1?代表传入失败。?至于Print()?函数要做的步骤为:

5?从该阵列最后面往回找到第一个不是0?的数字。

6?从该位数字往左边依序把它们一个一个印出来。

7?印出换行符号。

它的程式码可以写成:

28?29?30??i;??

31?(i=LEN-1;?i>0;?i--)??

32????(n[i]!=0)?break?;??

33?(;?i>=0;?i--)??

34????printf(?"%d"?35??printf(?"n"?);??

36?} ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

相关内容
推荐文章
站长推荐
热点阅读