C语言两个相加后逆序输出 应该是大整数模拟 求教 我的代码哪有错误?

有没有人在啊,想请分析下,C语言两个相加后逆序输出 应该是大整数模拟 求教 我的代码哪有错误??

题目描述
这是一个简单的问题,给你两个正整数a,b(0<=a,b<=2^31),然后把a和b反转然后相加;具体看样例;
输入
每组首先输入一个整数t,表示有t组数据。 以后每组数据占一行,且为两个整数a和b(没有前导0)。
输出
对于每组数据 ,输出数字反转相加后的结果。每组占一行。没有前导0!
样例输入
320 30101 2123 340
样例输出
5103364
提示

来源

#include "stdio.h"
#include "string.h"
int main()
{
int N,a,b;
int i,*p=NULL,*q=NULL;
int a[1000];
scanf("%d",&N);
while(N--)
{
scanf("%d%d",&a,&b);
memset(a,0,sizeof(a));
i=0;p=a+1000;q=a;
while(a!=0||b!=0)
{

a[i++]=a%10+b%10;
a/=10; b/=10;
}
for(i=0;i<=1000;i++)
{
if(a[i]>9)
{
a[i+1]=a[i+1]+a[i]/10;
a[i]=a[i]%10;
}
}
while(*p==0) {p--;}
while(*q==0) {q++;}
for(;q<=p;q++)
printf("%d",*q);
printf("\n");
}
return 0;
}
最新回答
栀子味的猫

2024-11-29 09:04:29

int a 和 int a[1000]名字重复

#include "stdio.h"
#include "string.h"
int main()
{
    int i,N,a,b, flag;
    scanf("%d",&N);
    while(N--)
    {
        int arr[1000] = {0};
        scanf("%d%d",&a,&b);
        flag = i = 0;
        while(a!=0||b!=0)
        {
            arr[i]= a%10 + b%10 + flag;
            if ( arr[i] > 9 )
            {
                arr[i] = arr[i] - 10;
                flag = 1;
            }
            else
                flag = 0;
            a/=10;
            b/=10;
            i++;
        }
        if ( flag == 1 )
        {
            arr[i] = 1;
            i++;
        }
        for( i; i>0; i-- )
            printf( "%d", arr[i-1] );
        printf("\n");
    }
    return 0;
}