-狗了个子- 2022-03-22 09:44 采纳率: 85.7%
浏览 23
已结题

要求实现大整数相加,为啥我进位不能进多位,比如99+1=100,但999+1会等于9100


#include<stdio.h>
#include<string.h>
int main()
{
    char s1[1003],s2[1003];
    int a[1003]={0},b[1003]={0},sum[1003]={0};
    int i,j,len1=0,len2=0,len_max,k=0,flag=0;
    gets(s1);
    gets(s2);
    len1=strlen(s1);
    len2=strlen(s2);
    if(len1>len2)    len_max=len1;
    else             len_max=len2;
    for(i=0,j=len1-1;j>=0;i++,j--) a[i]=s1[j]-'0';
    for(i=0,j=len2-1;j>=0;i++,j--) b[i]=s2[j]-'0';
    for(i=0,j=0;i<=len_max||j<=len_max;i++,j++)
    {
        if(i>len1-1) a[i]=0;
        else if(j>len2-1) b[j]=0;
        if(a[i]+b[j]>=10)
        {
            sum[i+1]++;
            sum[i]+=a[i]+b[i]-10;
        }
        else sum[i]+=a[i]+b[j];
    }
    if(sum[len_max]==1) printf("1");
    else 
        for(i=len_max-1;sum[i]==0;i--)
            if(i==0)  printf("0");
    for(;i>=0;i--) 
        printf("%d",sum[i]);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 浪客 2022-03-22 11:42
    关注
    
    for (i = 0; i < len_max; i++)
        {
            sum[i] += a[i] + b[i];
            if (sum[i] >= 10)
            {
                sum[i + 1]++;
                sum[i] -= 10;
            }
        }
        if (sum[i] == 0)
            i--;
        for (; i >= 0; i--)
            printf("%d", sum[i]);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 3月22日

悬赏问题

  • ¥20 有偿,学生成绩信息管理系统
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列