算法训练 反置数
时间限制:1.0s 内存限制:512.0MB
问题描述
一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
输入格式:输入只有一行,包括两个整数,中间用空格隔开。
输出格式:输出只有一行,即相应的结果。
输入输出样例
输入格式:输入只有一行,包括两个整数,中间用空格隔开。
输出格式:输出只有一行,即相应的结果。
输入输出样例
样例输入
435 754
样例输出
199
作者注释:
学会了几个函数:头文件:stdlib.h
itoa(n,&x,10)——数值转换成字符串函数。
其中n,表示的是一个数值;&x表示的是转换后存放字符串的指针;10表示基于10进制。
atoi函数:将字符串转为integer类型;
atof函数:将字符串转为double类型;
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<math.h> 5 int fanzhi(int x){ 6 char c[50]; 7 itoa(x,c,10);//将参数x十进制的基础上转成字符串 8 int answer=0; 9 int len = strlen(c);//获取字符串的长度 10 for(int i=len-1;i>=0;i--){ 11 if(c[i]!='0'){ 12 answer += (c[i]-'0')*(int)pow(10,i); 13 } 14 } 15 return answer; 16 } 17 int main(){ 18 int a,b; 19 scanf("%d%d",&a,&b); 20 printf("%d",fanzhi(fanzhi(a)+fanzhi(b))); 21 return 0; 22 }