c语言 输入一个正整数 n,求1~n之间“回文数”的个数。回文数是指一个数倒过来和原数一样,如12121、11、1221、1是回文数,而1231不是回文数。
时间: 2024-09-10 16:26:22 浏览: 90
在C语言中,你可以通过遍历1到n范围内的所有数字,并检查它们是否是回文数来解决这个问题。以下是实现的一个简单步骤:
1. 定义一个函数,比如`isPalindrome(int num)`,用于检查一个数是否是回文。这个函数将输入的数转换成字符串,然后比较原始字符串和反转后的字符串是否相等。
```c
#include <stdbool.h>
#include <stdio.h>
bool isPalindrome(int num) {
char str[100];
int len = sprintf(str, "%d", num);
for (int i = 0; i < len / 2; ++i) {
if (str[i] != str[len - 1 - i]) {
return false;
}
}
return true;
}
```
2. 主函数中,初始化一个计数器变量`count`为0,遍历从1到n的所有整数,如果发现是回文数,则增加计数器。
```c
int countPalindromes(int n) {
int count = 0;
for (int i = 1; i <= n; ++i) {
if (isPalindrome(i)) {
count++;
}
}
return count;
}
int main() {
int n;
printf("请输入一个正整数 n: ");
scanf("%d", &n);
int result = countPalindromes(n);
printf("1~%d之间的回文数有 %d 个。\n", n, result);
return 0;
}
```
阅读全文