目录
(一)题目描述
将一个数字n(10≤n≤1,000,000,000)拆成左右两部分,将右边的数字逆转后与左边的数字相加,输出和值。如果数字的位数是奇数,则左半部分应比右半部少一位
输入格式
一个正整数n,10≤n≤1,000,000,000
输出格式
一个正整数,按照要求求得的结果
计算数字位数函数
int num(int n)
{
int s=0;
do{
n/=10;
s++;
}while(n!=0);
return s;
}
反向输出数字函数
int opp(int n)
{
int sum=0;
while(n)
{
sum=sum*10+n%10;
n/=10;
}
return sum;
}
完整代码
#include <stdio.h>
#include <math.h>
#include <string.h>
int num(int n)
{
int s=0;
do{
n/=10;
s++;
}while(n!=0);
return s;
}
int opp(int n)
{
int sum=0;
while(n)
{
sum=sum*10+n%10;
n/=10;
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
int len=num(n); //数字位数
int l=0,r=0; //左边,右边
int t=0;
if(len%2==0)
{
l=n/pow(10,len/2);
t=n%(int)pow(10,len/2);
r=opp(t);
}else{
l=n/pow(10,(len+1)/2);
t=n%(int)pow(10,(len+1)/2);
r=opp(t);
}
printf("%d",l+r);
return 0;
}
(二)题目描述
将一个数字n(10≤n≤1,000,000,000)拆成左右两部分,将左边的数字逆转后与右边的数字相加,输出求得的和值 。如果数字的位数是奇数,则左半部分应比右半部少一位。
输入格式
一个正整数n,10≤n≤1,000,000,000
输出格式
一个正整数,按照要求求得的结果
完整代码
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdbool.h>
int num(int n)
{
int t=n,s=0;
do{
t/=10;
s++;
}while(t!=0);
return s;
}
int opp(int n)
{
int sum=0;
while(n)
{
sum=sum*10+n%10;
n/=10;
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
int len=num(n);
int l=0,r=0;
int t=0;
if(len%2==0)
{
t=n/pow(10,len/2); //和前面有点不一样
r=n%(int)pow(10,len/2);
l=opp(t);
}else{
t=n/pow(10,len/2);
r=n%(int)pow(10,len/2);
l=opp(t);
}
printf("%d",l+r);
return 0;
}