编写一个带整数参数的函数,其功能是返回一个数的相反数,如整数9831,函数返回值为1389。从键盘输入一个整数,调用该函数,判断这个数是否是回文数(所谓回文数,是指从左向右读和从右向左读是一样的数),输出判断结果。
Input输入仅一行,输入一个整数。
Output输出仅一行,如果是回文数,输出yes,否则输出no。
Sample Input1231
Sample Outputno
问题分析本题中判断回文数,核心是判断每一个数字是否与前面的数字对应。
如果要验证前后是否一一对应,可以想到i两个思路:整形判断或者数组判断,在此使用整形判断;如果用数组的话难以判断数字是否对称,过程相对比较复杂。
- 数字1一定是回文数
- 10、100、200之类的整数一定不是回文数
- 判断其他数字时,数字的每一位与1000、100、10做积,再不断相加等于自身,符合这样条件的数是回文数
难点就在判断第3类情况的时候:
else//其他情况
{
int i = 0;
int n = num;
int sum = 0;
for (i = n; i > 0; i /= 10)
{
sum = sum * 10 + i % 10;
}
if (sum == num)
{
return 1;
}
else
{
return 0;
}
}
for循环中,要多次对传参传入的数字进行取模,不断相加,最后再判断。
代码实现#includeint huiwen(int num); int main() { int num = 0; scanf("%d", &num); int i = huiwen(num); if (i == 1) { printf("yes"); } else if (i == 0) { printf("no"); } return 0; } int huiwen(int num) { if (num == 0)//0一定是回文数 { return 1; } else if (num % 10 == 0)//10 100 1000一定不是回文数 { return 0; } else//其他情况 { int i = 0; int n = num; int sum = 0; for (i = n; i > 0; i /= 10) { sum = sum * 10 + i % 10; } if (sum == num) { return 1; } else { return 0; } } }


![函数习题:判断一个数是否是回文数。——[C语言]入门基础编程 1039 函数习题:判断一个数是否是回文数。——[C语言]入门基础编程 1039](http://www.mshxw.com/aiimages/31/968738.png)
