以下是题目
找出m至n之间(包括m和n)满足以下特性的整数:
(1)它是奇数;
(2)该数也是一个完全平方数(完全平方数是指该数是某个整数的平方);
(3)该数还是回文数(回文数是指该数等于它的反序数)。
例如,121是奇数,它是11的平方,反序后也是121,因此121是符合题目要求的整数。
从原题目可以知道,三个判断(奇数,完全平方数,回文数),所以说理论上三个if判断语句就能得出结果了。
我为了思路方便整理,写出三个判断函数
首先是奇数判断
int IsOdd(int c) {
if (c % 2 != 0)
return c;
else
return false;
}
然后是完全平方数判断
int IsSquare(int a) {
int y;
y = (int)sqrt(a);
if (a == y * y) {
return y;
}
else
return false;
}
然后是回文数判断(回文数判断是直接用的别人的代码)
int IsPalindrome(int b) {
int s,y = 0;
s = b;
while (s > 0) {
y = y * 10 + s % 10;
s = s / 10;
}
if (y == b) {
return b;
}
else {
return false;
}
}
最后主函数
int main() {
int m, n;
printf("请输入m=");
scanf("%d", &m);
printf("请输入n=");
scanf("%d", &n);
int i;
for (i = m; i <= n; i++) {
if (IsOdd(i)) {
if (IsSquare(i)) {
int q = IsSquare(i);
if (IsPalindrome(i)) {
printf("%d是奇数,它是%d的平方,反序后也是%d。n",i,q,i);
}
}
}
}
return 0;
}
前面三个函数如果为true我都返回了值,主要是题目要求输出格式,直接返回数值,输出的时候直接用方便一点。



