题目描述:输入一个正整数n,计算n的逆序数m,输出m与n的和。要求程序定义一个inverse()函数和一个main()函数,inverse()函数接收一个整数值,返回这个数中数字逆序后的结果值。例如,给定数7631,函数返回1367 。
int inverse(int n)
{
//计算并返回n的逆序数字
}
输入:一个正整数n,输入保证计算结果在int范围内。
输出:输出一个整数,n与n的逆序数的和。输出占一行。
样例输入
1780
样例输出
2651
思路:将n从低到高依次分解存放数组,再逐一取出成位权并求和,将结果与n相加即可。(回文数判定类似)
代码
#include <stdio.h>
#include <math.h>
int inverse(int n){
int i=0,j=0,sum=0,a[30];
while(n){//将n新低位到最高位分解为i位数,存放在a数组;
a[i++]=n%10;
n=n/10;
}
while(i){//将a[0]至a[i-1]逐一与位权相乘,并求和
sum+=a[j++]*pow(10,i-1);
i--; //尽量将i--运算单独成句;容易混淆
}//注意i的大小问题!pow()可以用来