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

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]);
    }
}

修改完善如下,供参考:

#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;
}

不可直接a[k]+b[k],因为两个数的位数可能是不一样的。