(a)回文数字是一个按正向或者反向阅读都相同的数字。例如:5321235就是一个数字回文。使用这些信息创建一个名为rvs( )的递归函数,接收一个整型数值作为参数,如果它是一个数字回文则返回1,否则就返回0。 (b) 编写一个C语言程序,调用(a)中编写的函数rvs ( )。从键盘输入数据,判断是否是回文数字。(不使用atoi函数)
时间: 2024-02-01 14:14:48 浏览: 220
(a) 递归函数rvs的实现如下:
```c
int rvs(int num, int reverse_num){
if(num == 0)
return reverse_num;
else
return rvs(num/10, reverse_num*10 + num%10);
}
int isPalindrome(int num){
if(num < 0)
num = -num;
int reverse_num = rvs(num, 0);
if(reverse_num == num)
return 1;
else
return 0;
}
```
函数rvs的作用是将一个整形数值进行反转,reverse_num是反转后的结果,初始值为0。在每次递归调用中,将原数值num的个位数取出,加到reverse_num的末尾,并将num除以10,继续递归。当num为0时,返回反转后的结果reverse_num。
函数isPalindrome则判断一个整型数值是否是回文数字。首先排除负数的影响,然后调用rvs函数进行反转,最后判断反转后的结果是否与原数值相等。
(b) 完整程序如下:
```c
#include <stdio.h>
int rvs(int num, int reverse_num){
if(num == 0)
return reverse_num;
else
return rvs(num/10, reverse_num*10 + num%10);
}
int isPalindrome(int num){
if(num < 0)
num = -num;
int reverse_num = rvs(num, 0);
if(reverse_num == num)
return 1;
else
return 0;
}
int main(){
int num;
printf("请输入一个整数:\n");
scanf("%d", &num);
if(isPalindrome(num))
printf("%d是回文数字。\n", num);
else
printf("%d不是回文数字。\n", num);
return 0;
}
```
程序首先从键盘输入一个整型数值,然后调用isPalindrome函数判断是否是回文数字,并输出结果。
阅读全文