c语言用数组判断回文
时间: 2023-11-24 10:51:10 浏览: 91
以下是C语言使用数组判断回文数的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for(i=0;i<len;i++)
{
if(str[i] != str[len-i-1])
{
flag = 1;
break;
}
}
if(flag)
{
printf("%s 不是回文数", str);
}
else
{
printf("%s 是回文数", str);
}
return 0;
}
```
该程序首先要求用户输入一个字符串,然后使用strlen()函数获取字符串的长度。接下来,使用for循环遍历字符串,比较字符串的第i个字符和倒数第i+1个字符是否相等,如果不相等,则将flag标记为1,表示该字符串不是回文数。最后根据flag的值输出结果。
相关问题
c语言如何判断回文数组
回文数组是指正着读和倒着读都一样的数组。判断一个数组是否是回文数组,可以采用双指针的方法,具体步骤如下:
1. 定义两个指针i和j,分别指向数组的首尾元素。
2. 使用while循环,判断i是否小于j,若是则执行下一步,否则跳出循环。
3. 判断array[i]和array[j]是否相等,若相等则将i指针向后移动一位,将j指针向前移动一位,继续执行while循环;若不相等则说明数组不是回文数组,直接返回false。
4. 如果while循环正常执行完毕,则说明数组是回文数组,返回true。
以下是C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int array[], int length) {
int i = 0, j = length - 1;
while (i < j) {
if (array[i] != array[j]) {
return false;
}
i++;
j--;
}
return true;
}
int main() {
int array[] = {1, 2, 3, 2, 1};
int length = sizeof(array) / sizeof(array[0]);
if (isPalindrome(array, length)) {
printf("The array is palindrome.\n");
} else {
printf("The array is not palindrome.\n");
}
return 0;
}
```
上述代码定义了一个函数isPalindrome,该函数接受一个数组和数组长度作为参数,返回一个bool类型的值,表示该数组是否是回文数组。在main函数中,我们定义了一个数组并调用了isPalindrome函数来判断该数组是否是回文数组。如果是,则输出"The array is palindrome.",否则输出"The array is not palindrome."。
用c语言实现栈的回文判断
下面是用C语言实现栈的回文判断的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
char stack[MAX_SIZE];
int top = -1;
void push(char c) {
if (top == MAX_SIZE - 1) {
printf("Stack Overflow");
return;
}
stack[++top] = c;
}
char pop() {
if (top == -1) {
printf("Stack Underflow");
return -1;
}
return stack[top--];
}
int main() {
char str[MAX_SIZE];
int i, len, mid;
printf("Enter a string: ");
scanf("%s", str);
len = strlen(str);
mid = len / 2;
for (i = 0; i < mid; i++) {
push(str[i]);
}
if (len % 2 != 0) {
i++;
}
while (str[i] != '\0') {
if (str[i] != pop()) {
printf("%s is not a palindrome", str);
return 0;
}
i++;
}
printf("%s is a palindrome", str);
return 0;
}
```
这个程序使用一个字符数组作为栈来实现。我们首先读入一个字符串,然后将字符串的前一半字符依次入栈。接着,我们用一个循环读取字符串的后一半字符,同时弹出栈顶元素,并与当前字符比较。如果两个字符不相等,则该字符串不是回文,否则它是回文。