用C语言来写判断一个数是否是回文数的小程序
时间: 2023-12-29 11:05:24 浏览: 76
以下是用C语言写的判断一个数是否是回文数的小程序:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int num) {
int reversed = 0, original = num;
while (original > 0) {
reversed = reversed * 10 + original % 10;
original /= 10;
}
return num == reversed;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPalindrome(num)) {
printf("%d 是回文数。\n", num);
} else {
printf("%d 不是回文数。\n", num);
}
return 0;
}
```
程序中定义了一个 `isPalindrome` 函数,该函数接收一个整数,返回一个布尔值,表示该整数是否是回文数。函数内部使用了一个 `while` 循环,将原始数的每一位倒序排列得到一个新的数,然后与原始数进行比较,如果相等则说明该数是回文数。
在 `main` 函数中,首先读取用户输入的整数,然后调用 `isPalindrome` 函数进行判断,并输出相应的结果。
相关问题
c语言输入一行字符串,判断其是否是回文字符串,规则:只判断字母和数字,忽略大小写
以下是一个简单的 C 语言程序,可以实现输入一行字符串,判断其是否是回文字符串的功能,同时忽略大小写,只判断字母和数字:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char str[MAX_LENGTH];
int len, i, j;
int is_palindrome = 1;
// 读入一行字符串
printf("请输入一行字符串:\n");
fgets(str, MAX_LENGTH, stdin);
// 取得字符串长度
len = strlen(str);
// 检查字符是否相同
for (i = 0, j = len - 1; i < j; i++, j--) {
// 忽略非字母和数字的字符
while (!isalnum(str[i]) && i < j) i++;
while (!isalnum(str[j]) && i < j) j--;
// 比较字符,忽略大小写
if (tolower(str[i]) != tolower(str[j])) {
is_palindrome = 0;
break;
}
}
// 输出结果
if (is_palindrome) {
printf("是回文字符串!\n");
} else {
printf("不是回文字符串!\n");
}
return 0;
}
```
程序首先读入一行字符串,然后通过一个 for 循环,逐个比较字符是否相同。在比较之前,会先忽略非字母和数字的字符,并且在比较时会忽略大小写。如果发现不同的字符,就说明不是回文字符串,程序会输出“不是回文字符串!”;否则,说明是回文字符串,程序会输出“是回文字符串!”
写一段检测回文的c语言程序
### 回答1:
#include<stdio.h>int main()
{
char str[20];
int i, length;
int flag = 0;
printf("输入一个字符串: ");
scanf("%s", str);
length = strlen(str);
for(i=0;i < length ;i++){
if(str[i] != str[length-i-1]){
flag = 1;
break;
}
}
if (flag) {
printf("%s不是一个回文字符串\n", str);
}
else {
printf("%s是一个回文字符串\n", str);
}
return 0;
}
### 回答2:
以下是一个简单的C语言程序用于检测回文:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int left = 0;
int right = strlen(str) - 1;
while (right > left) {
if (str[left] != str[right]) {
return 0; // 如果不相等,则不是回文
}
left++;
right--;
}
return 1; // 如果全部相等,则是回文
}
int main() {
char str[100]; // 假设输入的字符串最长为100
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("输入的字符串是回文。\n");
} else {
printf("输入的字符串不是回文。\n");
}
return 0;
}
```
这个程序采用了双指针的方法来检测回文。我们从字符串的两端开始,每次比较两个字符是否相等,如果不相等,则说明字符串不是回文。如果所有字符都比较完毕,且没有发现不相等的情况,那么字符串就是回文。
程序首先定义了一个`isPalindrome`函数,该函数接收一个字符串作为参数,并返回一个整数(1表示是回文,0表示不是回文)。在函数内部,我们使用两个变量`left`和`right`分别指向字符串的首尾字符。然后,我们使用一个while循环,每次迭代中比较`left`和`right`指向的字符是否相等。如果不相等,函数就返回0,表示字符串不是回文。如果相等,我们将`left`右移一位,`right`左移一位,继续下一次循环。当`right`小于等于`left`时,说明所有字符都比较完毕且没有发现不相等的情况,此时函数返回1,表示字符串是回文。
在`main`函数中,首先声明了一个字符数组`str`用于存储用户输入的字符串。然后,我们使用`printf`函数提示用户输入一个字符串,并使用`scanf`函数将用户的输入保存在`str`中。接下来,调用`isPalindrome`函数检测`str`是否为回文,并根据返回值输出相应的结果。
以上就是一个简单的用于检测回文的C语言程序。该程序仅用于演示基本思路,实际应用中可能需要进行更多的输入合法性检查和字符串处理。
### 回答3:
下面是一个用C语言编写的检测回文字符串的程序:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
int i, j;
// 从两端开始检查字符是否相等
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0; // 不是回文
}
}
return 1; // 是回文
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("是回文字符串\n");
} else {
printf("不是回文字符串\n");
}
return 0;
}
```
这个程序首先定义了一个名为`isPalindrome`的函数,用于判断一个字符串是否为回文字符串。该函数接受一个字符指针作为参数,然后找出字符串的长度,并使用两个指针依次从两端比较字符。如果存在不相等的字符,函数返回0,否则返回1表示是回文字符串。
在`main`函数中,我们首先声明了一个字符数组`str`,然后使用`scanf`函数从用户输入中读取一个字符串。接着,我们调用`isPalindrome`函数进行检测,如果返回1,则打印"是回文字符串";如果返回0,则打印"不是回文字符串"。
注意,该程序仅检测回文字符串,不考虑大小写字母和空格。如果要考虑这些情况,可以在判断字符相等时进行适当的转换或排除。
阅读全文