C语言编程 求解 输入两个大整数(大于100位),求它们之和

C语言编程 求解 输入两个大整数(大于100位),求它们之和,第1张

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

void 纯轿RightMoving(char *s,int n)

{

char *p=s,*q

while(*p++!='\0')

for(q=pq!=sq--)

*(q-1+n) = *(q-1)

for(int i=0i<n++i)s[i] = '0'

}

int LargerIntegerAdd(char 游租*result,char *n1,char *n2)

{

int i,t=0,num

num = strlen(n1)>strlen(n2)?strlen(n1):strlen(n2)

result[num]='\0'

for(i=num-1i>-1i--)

{

result[i] = (n1[i] + n2[i] + t - '0')

t=0

if(result[i]>'9')

{

t++

result[i] -= 10

}

}

return t

}

int main()

{

int i

char 做磨肆n1[200],n2[200],result[200]

gets(n1)

gets(n2)

printf("%s+%s=",n1,n2)

if(strlen(n1)>strlen(n2))

RightMoving(n2,strlen(n1)-strlen(n2))

if(strlen(n1)<strlen(n2))

RightMoving(n1,strlen(n2)-strlen(n1))

i = LargerIntegerAdd(result,n1,n2)

if(i>0)

printf("%d",i)

puts(result)

return 0

}

你刚提问就在敲……其中不小心多加了1搞的调试到现在,终于好了!

这个就是不对齐的结果

1234 1234

123 123

------------------

1358 2464

给你提个思路,就是反序后,那么个位和个位就对上了,计算完成后,在反序回来,呵呵

反序用strrev函数

中心思路,轮备派个位先加

c[0]=a[0]+b[0]

用for处理中间各位,滚圆注腊贺意要加上上一位的进位,并上一位取一位

for(i=1i<ki++)

{

c[i]=a[i]+b[i]+c[i-1]/10

c[i-1]%=10

}

最后要处理最高位

如果大于9,那么再加一位

if(c[k-1]>9)

{

c[k-1]%=10

c[k]=1

k++

}

最后int变char,注意要加上\0结束符

反序回来就是结果

1、首先把头文件,main函数写好#include<stdio.h> main(),如下图所示

2、之后需要定义几个誉消蔽变量,一个存放和,一个从1开始到100,如下图所示。

3、之后书写for循环,首先给i赋值为1,其中如果要求200以内和把数字100改为200即可。

4、然后写for循环里面的内容,sum=sum+i;把每个i的值加到sum里面。

5、最后进行输出,编写输出语句把它输出出来,sum为整形,故桥卖用%d,如下图所示就完成了。庆州


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8240931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存