一个觉得很难的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 展开
s3存放s1与s2相加后的结果。
样例一:
输入:
999999999999999999999
999999999999999999999
输出
1999999999999999999998
样例二:
输入:
1234567890123456789
876543211
输出:
1234567891000000000 展开
5个回答
展开全部
很难才简汪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;
}
2015-12-06 · 知道合伙人软件行家
gongxinheng
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:55
获赞数:380
6年游戏开发经验。曾在多个MMO PC游戏以及手游项目担任主程。 目前在美国华盛顿州立大学留学并参与研究项目
向TA提问 私信TA
关注
展开全部
把两个数字字符串都转换成数字类型直接相加就可以了
在C语言中的stdlib.h头文件中提供了现成的字符串转数字的函数atoi。但是要注意,两个数字字符串必须都是合法的数字格式。如果是小数,可以用atof函数,使用方法跟atoi类似。具体知告请参考:
#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
以上转自百度百肆枣科(上面提供的链接)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参见之前的回答
http://zhidao.baidu.com/question/518661709
思路是用3个栈A,B,C,把s1和s2各个字符分别压到A、B栈,第三个栈嫌者C存结果。
分别把A、B的栈顶元素pop出来做运算,然后压芹毁薯入C中。
最后C元素余歼依次出栈就是结果。
http://zhidao.baidu.com/question/518661709
思路是用3个栈A,B,C,把s1和s2各个字符分别压到A、B栈,第三个栈嫌者C存结果。
分别把A、B的栈顶元素pop出来做运算,然后压芹毁薯入C中。
最后C元素余歼依次出栈就是结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实就是把字符串变成int 然后相加
追问
int不行,int的最大值为2147483647,位数是10位,当我对长度超过10进行相加操作,就不行了。比如我要对一个长度为60位的数字进行相加。还能转换成int吗。double都不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
和无助,然而为了生佣工 活,我们雪又多少夺主
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询