输入两个正整数,先将它们分别倒过来,然后再相加,最后再将结果倒过来输出。注意:前置的零将被忽略。例如,输入305和794。倒过来相加得到1000,输出时只要输出1就可以了。测试数据保证结果在int类型的表示范围内。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个正整数a、b。
输出格式:
对于每组测试,将a、b逆序后求和并逆序输出(前导0不需输出)。
输入样例:
2
21 6
123 456
输出样例:
81
579
代码:
#include<stdio.h>
#include<math.h>
int a[100];
int b[100];
int c[100];
int main()
{
int t,m,n,i;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
int k=0,d=0,ans=0,sum=0,tol;
while(m!=0)
{
a[k++]=m%10;
m=m/10;
}
while(n!=0)
{
b[d++]=n%10;
n=n/10;
}
for(i=0;i<k;i++)
{
ans+=a[i]*pow(10,k-i-1);//逆序m
}
for(i=0;i<d;i++)
{
sum+=b[i]*pow(10,d-i-1);//逆序n
}
tol=sum+ans;
int l=0;
int cnt=0;
while(tol!=0)
{
c[l++]=tol%10;
tol=tol/10;
}
if(c[0]!=0&&c[l-1]!=0)
{
for(i=0;i<l;i++)
printf("%d",c[i]);
printf("\n");
}
else
{
for(i=0;i<l;i++)//逆序tol
{
if(c[i]==0&&c[i-1]==0)//重点:前导0不需要输出
cnt++;
else
{
printf("%d",c[i]);
cnt++;
}
}
printf("\n");
}
}
return 0;
}
一个数逆序输出,不要前导0
代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
int c[100];
int main()
{
int num,i,cnt=0,l=0;
scanf("%d",&num);
while(num!=0)
{
c[l++]=num%10;
num=num/10;
}
if(c[0]!=0&&c[l-1]!=0)
{
for(i=0;i<l;i++)
printf("%d",c[i]);
printf("\n");
}
else
{
for(i=0;i<l;i++)//逆序tol
{
if(c[i]==0&&c[i-1]==0)//重点:前导0不需要输出
{
cnt++;
}
else
{
printf("%d",c[i]);
cnt++;
}
}
printf("\n");
}
return 0;
}
输入:100
输出:1
输入:1001
输出:1001