这是汕头大学的第1030道题,答案:
#include<stdio.h>
#include<string.h>
int change(char C[],int k)
{
int i;
for(i=0;i<k;i++)
{
if(C[i]/10)
{
C[i]=C[i]%10;
C[i+1]++;
}
}
if(C[i])
k++;
return k;
}
int main()
{
char A[52],B[52],C[52];
int len1,len2,i,j,k;
while(scanf("%s",A)!=EOF)
{
getchar();
scanf("%s",B);
for(k=0;k<52;k++)
C[k]=0;
len1=strlen(A);
len2=strlen(B);
i=len1-1;
j=len2-1;
k=0;
while(i>=0&&j>=0)
{
C[k++]=A[i--]+B[j--]-2*48;
}
while(i>=0)
{
C[k++]=A[i--]-48;
}
while(j>=0)
{
C[k++]=B[j--]-48;
}
k=change(C,k)-1;
for(i=k;i>=0;i--)
printf("%d",C[i]);
printf("\n");
}
return 0;
}
讲解:1由于所要加的两个数太大了,超出了长整树所能加的范围,所以想到用两个数组来存放数,应此
先把数当做字符串来读进来先。
2两数相加,应此用到了第3个数组,应此在进行加之前要把数组清空先。
3读入的字符串应为不一定长度相同,但是我门加的时候必须对其来加,应此我门要先把字符串中 元素从后面加起。
4式中-48的意思是把相应的字符串转化成相应的整数。
5考虑到相加时会产生进位这些,应此用了channg函数来判断是否有进位,有的话,那就进一位
6然后在用k来把数按原来的顺序排好。
正文
stu(1030)2005-08-30 20:15:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/elva6401/4270.html
阅读(2236) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论