用C++写一个回文数判定
时间: 2023-04-10 15:01:50 浏览: 149
好的,以下是用C语言写的回文数判定代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, j, len, flag = 1;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0, j = len - 1; i < len / 2; i++, j--) {
if (str[i] != str[j]) {
flag = 0;
break;
}
}
if (flag) {
printf("%s是回文数\n", str);
} else {
printf("%s不是回文数\n", str);
}
return 0;
}
```
希望能对您有所帮助!
相关问题
用c++编写一个回文是指正读和反读均相同的字符序列,如”abba”和”abdba”均是回文,但”good”不是回文,试写一算法利用栈判定给定的字符序列是否为回文。(提示:将一半字符入栈
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
typedef struct {
char data[MAXSIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAXSIZE - 1;
}
void push(Stack *s, char c) {
if (is_full(s)) {
printf("Stack overflow\n");
return;
}
s->top++;
s->data[s->top] = c;
}
char pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow\n");
return '\0';
}
char c = s->data[s->top];
s->top--;
return c;
}
int main() {
char str[MAXSIZE];
printf("Enter a string: ");
scanf("%s", str);
int len = strlen(str);
Stack s;
init(&s);
int i;
for (i = 0; i < len / 2; i++) {
push(&s, str[i]);
}
if (len % 2 != 0) {
i++;
}
for (; i < len; i++) {
if (pop(&s) != str[i]) {
printf("%s is not a palindrome\n", str);
return 0;
}
}
printf("%s is a palindrome\n", str);
return 0;
}
回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。用c++试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
在C++中,判断一个字符向量是否为回文的一种常见方法是通过比较原始字符串与其反转后的字符串是否相等。可以利用栈的数据结构来辅助实现这个过程。以下是简单的步骤和伪代码:
1. 定义一个空栈用于存储字符向量的一半。
2. 遍历输入字符向量的一半,依次压入栈中。
3. 另外一半字符继续遍历,从栈顶取出元素并与当前字符比较,如果匹配则继续,如果不匹配则返回false,表示非回文。
4. 当所有字符都检查过,并且每一对对应位置的字符都匹配,说明该向量是回文。
```cpp
#include <iostream>
#include <stack>
#include <vector>
bool isPalindrome(std::vector<char> str) {
std::stack<char> stack;
int n = str.size();
// 将前一半字符压入栈
for (int i = 0; i < n / 2; ++i) {
stack.push(str[i]);
}
// 比较剩余部分与栈顶元素
for (int i = n / 2; i < n; ++i) {
if (str[i] != stack.top()) {
return false;
}
stack.pop();
}
// 如果到这一步都没返回false,说明是回文
return true;
}
int main() {
std::vector<char> test_cases = {'a', 'b', 'b', 'a'};
std::cout << (isPalindrome(test_cases) ? "是回文" : "不是回文") << std::endl;
return 0;
}
```
阅读全文