c语言用只接收一个参数的递归判断一个数字是否为回文数字
时间: 2023-06-19 07:09:43 浏览: 108
可以使用以下递归函数来判断一个数字是否为回文数字:
```c
#include <stdio.h>
int isPalindrome(int num, int temp) {
if (num == 0) {
return temp;
}
temp = temp * 10 + num % 10;
return isPalindrome(num / 10, temp);
}
int main() {
int num, temp = 0;
printf("请输入一个数字:");
scanf("%d", &num);
if (num == isPalindrome(num, temp)) {
printf("%d是回文数字", num);
} else {
printf("%d不是回文数字", num);
}
return 0;
}
```
该递归函数将输入的数字从个位数开始逐个提取,并将它们组合成一个新的数字。如果最终组合成的数字与原始输入的数字相同,则该数字是回文数字。
相关问题
(a)回文数字是一个按正向或者反向阅读都相同的数字。例如:5321235就是一个数字回文。使用这些信息创建一个名为rvs( )的递归函数,接收一个整型数值作为参数,如果它是一个数字回文则返回1,否则就返回0。 (b) 编写一个C语言程序,调用(a)中编写的函数rvs ( )。从键盘输入数据,判断是否是回文数字。
(a) 代码实现如下:
```python
def rvs(num):
if len(str(num)) <= 1:
return 1
elif str(num)[0] == str(num)[-1]:
return rvs(str(num)[1:-1])
else:
return 0
```
(b) C语言程序实现如下:
```c
#include <stdio.h>
#include <string.h>
int rvs(int num);
int main()
{
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (rvs(num))
printf("%d是回文数字\n", num);
else
printf("%d不是回文数字\n", num);
return 0;
}
int rvs(int num)
{
char str[20];
sprintf(str, "%d", num);
int len = strlen(str);
if (len <= 1)
return 1;
else if (str[0] == str[len - 1])
return rvs(atoi(str + 1), len - 2);
else
return 0;
}
```
其中,`sprintf`函数可以将整数类型转换为字符串类型,`atoi`函数可以将字符串类型转换为整数类型。
数字回文是一个按正向或反向阅读都相同的数值。例如 4321234 就是一个数字回文。用c语言创建一个递归函数 numpal( ),接收一个整数作为参数,如果是回文返回 1,否则返回0。把该函数纳入一个完整程序运行测试。
好的,下面是完整的程序:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[], int start, int end) {
// 递归的基本情况
if (start >= end) {
return 1;
}
// 如果首尾字符相同,则检查剩余字符是否回文
if (str[start] == str[end]) {
return isPalindrome(str, start+1, end-1);
}
// 如果不相同,则不是回文
return 0;
}
int numpal(int num) {
char str[20];
// 把整数转换成字符串
sprintf(str, "%d", num);
int len = strlen(str);
// 检查字符串是否回文
return isPalindrome(str, 0, len-1);
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (numpal(num)) {
printf("%d 是回文数\n", num);
} else {
printf("%d 不是回文数\n", num);
}
return 0;
}
```
运行结果如下:
```
请输入一个整数:12321
12321 是回文数
```
```
请输入一个整数:12345
12345 不是回文数
```
阅读全文