C语言:查找10到1000之间的回文数
C语言:查找10到1000之间的回文数
本文介绍两种使用C语言查找10到1000之间回文数的方法,并提供详细的代码示例。
什么是回文数?
回文数是指正序和倒序读取都相同的数字,例如121、55、232等。
方法一:使用字符串比较
#include <stdio.h>
#include <string.h>
int is_palindrome(int num) {
char str[10];
sprintf(str, '%d', num);
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
return 0;
}
}
return 1;
}
int main() {
printf('10到1000之间的回文数:\n');
for (int num = 10; num <= 1000; num++) {
if (is_palindrome(num)) {
printf('%d\n', num);
}
}
return 0;
}
这段代码首先定义了一个名为is_palindrome的函数,该函数接收一个整数作为参数,并判断该整数是否是回文数。
在is_palindrome函数内部,首先使用sprintf函数将整数转换为字符串,然后使用strlen函数获取字符串的长度。
接着,使用一个循环遍历字符串的前半部分,比较字符串中对称位置的字符是否相等。如果所有对称位置的字符都相等,则该整数是回文数,函数返回1;否则,函数返回0。
在main函数中,使用一个循环遍历10到1000之间的所有整数,并调用is_palindrome函数判断每个整数是否是回文数。如果是,则打印该整数。
方法二:使用数学运算
#include <stdio.h>
int is_palindrome(int num) {
int temp = num;
int reverse = 0;
while (temp != 0) {
reverse = reverse * 10 + temp % 10;
temp /= 10;
}
return (num == reverse);
}
int main() {
printf('10到1000之间的回文数:\n');
for (int num = 10; num <= 1000; num++) {
if (is_palindrome(num)) {
printf('%d\n', num);
}
}
return 0;
}
这段代码也定义了一个名为is_palindrome的函数来判断一个整数是否是回文数,但使用了不同的方法。
在is_palindrome函数内部,首先创建一个临时变量temp来存储传入的整数。然后,使用一个循环将temp的各位数字逆序存储到另一个变量reverse中。
循环结束后,比较num和reverse的值。如果相等,则该整数是回文数,函数返回1;否则,函数返回0。
main函数与方法一相同,也是使用一个循环遍历10到1000之间的所有整数,并调用is_palindrome函数判断每个整数是否是回文数。
总结
本文介绍了两种使用C语言查找回文数的方法:字符串比较和数学运算。两种方法各有优缺点,可以根据实际情况选择合适的方法。
原文地址: https://www.cveoy.top/t/topic/mZb 著作权归作者所有。请勿转载和采集!