前端自学向前一步中 2021-07-10 10:24 采纳率: 100%
浏览 27
已结题

不知道哪里出了问题,求指导

c语言

img

#include <stdio.h>
int main()
{
    int i,j,k;
    int a[200],b[200];
    char ch;
      for(i=0;i<=199;i++)
      {
          ch=getchar();
          if (ch!="\n")
             a[i]=ch;
          else
             break;
      }
      for(j=0;j<=199;j++)
       {
          ch=getchar();
          if (ch!="\n")
             b[j]=ch;
          else
              break;
      }   
    for(k=0;k<i;k++)
    {
        printf("%d\n",a[k]+b[k]);
    }
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-07-10 14:45
    关注

    修改完善如下,供参考:

    #include <stdio.h>
    
    #define MAX(a,b) a>b?a:b
    
    int main()
    {
        int i,j,k,t,n,flg;
        int a[200]={0},b[200]={0},c[200]={0},num=0;
        char ch;
        for(i=0;i<=199;i++)//输入a[]
        {
            ch=getchar();
            if (ch != '\n')//if (ch != "\n")
                a[i]=ch-'0';
            else
                break;
        }
        for(j=0;j<=199;j++)//输入b[]
        {
            ch=getchar();
            if (ch!='\n') //if (ch != "\n")
                b[j]=ch-'0';
            else
                break;
        }
        for(k=0;k<i/2;k++) //将两个数组a[] b[]逆序
           {t = a[k];a[k] = a[i-1-k];a[i-1-k] = t;}
        for(k=0;k<j/2;k++)
           {t = b[k];b[k] = b[j-1-k];b[j-1-k] = t;}
    
        n=MAX(i,j);//两数组最长的长度
        for (k=0; k<n; k++)
        {
                flg = 0;//用来看最后一次循环是否进位,在输出的时候用到了
                c[k] = a[k] + b[k]+ num;//如果进位,加num
                num = 0;
                if (c[k] >= 10)
                {
                    c[k + 1] = 1;//最后一位c[n]可以获得到进位。
                    num = 1;
                    c[k] -= 10;
                    flg = 1;
                }
        }
        for(k=n+flg-1;k>=0;k--) printf("%d",c[k]);
        printf("\n");
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月10日