解题思路:
写了很久,要注意前导0和十进制的运算
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[201]={'\0'},brr[201]={'\0'}; //存字符的数组
int drr[201]={0},frr[201]={0}; //存整数的字符
int i,j;
scanf("%s %s",arr,brr); //输入字符
int len1=strlen(arr); //计算字符长度
int len2=strlen(brr); //计算字符长度
for(i=0,j=len1-1;j>=0;)
{
drr[i++]=arr[j--]-'0'; //转换字符为整数,存进drr中
}
for(i=0,j=len2-1;j>=0;)
{
frr[i++]=brr[j--]-'0'; //转化字符为整数,存进frr中
}
int k=0;
while(k<=200) //大整数加法
{
drr[k]+=frr[k];
if(drr[k]>=10)
{
drr[k]%=10; //写十进制,例如13%10=3,该为存3,而下一位就+1
drr[k+1]++;
}
k++;
}
int t=0; //用来记录0的位置
i=0;
for(i=200;i>=0;i--) //前导0的计算
{
if(drr[i]!=0)
{
t=i;
break;
}
}
if(i==-1) //字符都是0
{
printf("0\n");
}
else
{
for(i=t;i>=0;i--) //从记录的前导0位置开始--,倒序输出(因为要最高为先输出),前导0就是要避免最高位为0
{
printf("%d",drr[i]);
}
}
return 0;
}
0.0分
2 人评分