一个觉得很难的C语言问题。对两个数字字符串相加。

有定义:chars1[200],s2[200],s3[200];s3存放s1与s2相加后的结果。样例一:输入:999999999999999999999999999999... 有定义:char s1[200],s2[200],s3[200];
s3存放s1与s2相加后的结果。

样例一:
输入:
999999999999999999999
999999999999999999999
输出
1999999999999999999998

样例二:
输入:
1234567890123456789
876543211
输出:
1234567891000000000
展开
 我来答
百度网友28b4182
2013-04-27 · TA获得超过7222个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1838万
展开全部

很难才简汪10分啊

#include<stdio.h>
#include<string.h>拆誉
int main()
{
int i,t,j=1,n,len,k;
char sum[1009],sa[1009],sb[1009];
scanf("%d",&t);
getchar();
while(t--)
{
for(i=0;i<1009;i++)
sum[i]='0';
scanf("%s%s",sa,sb);
len=strlen(sa);
for(i=len-1,k=0;i>旅咐段=0;i--,k++)
{
sum[k]=sum[k]-'0'+sa[i];
n=k;
while(sum[n]>'9')
{
sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
sum[n]=(sum[n]-'0')%10+'0';
n++;
}
}
len=strlen(sb);
for(i=len-1,k=0;i>=0;k++,i--)
{
sum[k]=sum[k]-'0'+sb[i];
n=k;
while(sum[n]>'9')
{
sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
sum[n]=(sum[n]-'0')%10+'0';
n++;
}
}
printf("Case %d:\n%s + %s = ",j,sa,sb);
j++;
for(i=1008;sum[i]=='0';i--);
for(;i>=0;i--)
printf("%c",sum[i]);
printf("\n");
if(t>0)
printf("\n");
}
return 0;
}
gongxinheng
2015-12-06 · 知道合伙人软件行家
gongxinheng
知道合伙人软件行家
采纳数:55 获赞数:380
6年游戏开发经验。曾在多个MMO PC游戏以及手游项目担任主程。 目前在美国华盛顿州立大学留学并参与研究项目

向TA提问 私信TA
展开全部

把两个数字字符串都转换成数字类型直接相加就可以了


在C语言中的stdlib.h头文件中提供了现成的字符串转数字的函数atoi。但是要注意,两个数字字符串必须都是合法的数字格式。如果是小数,可以用atof函数,使用方法跟atoi类似。具体知告请参考:

http://baike.baidu.com/link?url=0EMXyMfOxMyaQnC5E1YQRQzMeFmM1w7n-9t9k5QhVDhW9bbNPxEdsR174hxXFCjWfIvOXoFR9J5wratcssTLlK

#include <stdlib.h>
#include <stdio.h>
int main()
{
    char a[] = "-100"; 
    char b[] = "123"; 
    int c; 
    c = atoi(a) + atoi(b);
    printf("c=%d\n", c);
    return 0;
}

执行结裂猛拆果:

c = 23

以上转自百度百肆枣科(上面提供的链接)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zebra0123
2013-04-27 · TA获得超过180个赞
知道小有建树答主
回答量:305
采纳率:100%
帮助的人:161万
展开全部
参见之前的回答
http://zhidao.baidu.com/question/518661709

思路是用3个栈A,B,C,把s1和s2各个字符分别压到A、B栈,第三个栈嫌者C存结果。

分别把A、B的栈顶元素pop出来做运算,然后压芹毁薯入C中。

最后C元素余歼依次出栈就是结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦里寻你我他
2013-04-27 · TA获得超过2199个赞
知道大有可为答主
回答量:2171
采纳率:42%
帮助的人:1207万
展开全部
其实就是把字符串变成int 然后相加
追问
int不行,int的最大值为2147483647,位数是10位,当我对长度超过10进行相加操作,就不行了。比如我要对一个长度为60位的数字进行相加。还能转换成int吗。double都不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmm3210
2013-04-27
知道答主
回答量:72
采纳率:0%
帮助的人:16.9万
展开全部
和无助,然而为了生佣工 活,我们雪又多少夺主
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式