编写一个带整数参数的函数,其功能是返回一个数的相反数,如整数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循环中,要多次对传参传入的数字进行取模,不断相加,最后再判断。
代码实现#include
int 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;
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)