写个求回文数的C语言’代码
时间: 2023-11-12 13:03:56 浏览: 89
下面是一个求回文数的C语言代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, j, len, flag = 0;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for(i = 0, j = len - 1; i < len / 2; i++, j--)
{
if(str[i] != str[j])
{
flag = 1;
break;
}
}
if(flag)
printf("%s 不是回文数", str);
else
printf("%s 是回文数", str);
return 0;
}
相关问题
如何编写回文的C语言代码
### 回答1:
可以使用以下C语言代码来编写回文: #include <stdio.h>
int main()
{
char str[100], rev[100];
int count = 0, end, i;
// 读取字符串
printf("请输入一个字符串:");
scanf("%s", str);
// 计算字符串长度
while (str[count] != '\0')
count++;
end = count - 1;
// 将字符串复制到另一个字符数组中
for (i = 0; i < count; i++) {
rev[i] = str[end];
end--;
}
rev[i] = '\0';
// 比较字符串
if (strcmp(str, rev) == 0)
printf("\"%s\" 是回文字符串。\n", str);
else
printf("\"%s\" 不是回文字符串。\n", str);
return 0;
}
### 回答2:
编写回文的C语言代码,需要完成以下几个步骤:
1.获取用户输入的字符串;
2.创建一个新的字符串变量,用来存储翻转后的字符串;
3.将原始字符串逆序复制到新的字符串变量中;
4.比较原始字符串和翻转后的字符串是否相同;
5.根据比较结果输出相应的提示信息。
下面是一个简单的回文代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("请输入一个字符串:\n");
scanf("%s", input);
int length = strlen(input);
char reverse[100];
int i, j;
// 将原始字符串逆序存储到新字符串中
for (i = length - 1, j = 0; i >= 0; i--, j++) {
reverse[j] = input[i];
}
reverse[j] = '\0';
// 比较原始字符串和翻转后的字符串是否相同
if (strcmp(input, reverse) == 0) {
printf("%s 是一个回文字符串。\n", input);
} else {
printf("%s 不是一个回文字符串。\n", input);
}
return 0;
}
```
以上代码中,通过使用`strlen`函数获取输入字符串的长度,然后使用一个循环将每个字符逆序复制到新的字符串中。最后使用`strcmp`函数来比较输入字符串和翻转后的字符串是否相同,若相同则输出“是一个回文字符串”,否则输出“不是一个回文字符串”。
### 回答3:
编写回文的C语言代码可以采用以下步骤:
1. 首先,声明一个字符数组来存储输入的字符串。
2. 接下来,使用C语言的标准输入函数(如`scanf`)获取用户输入的字符串,并将其存储在字符数组中。
3. 创建一个整数变量用于追踪字符数组的长度,使用C语言的字符串函数(如`strlen`)计算字符串长度,并将结果赋值给该变量。
4. 创建另外两个整数变量,一个用于指向字符数组的开头,另一个用于指向字符数组的结尾。开头指针初始化为0,结尾指针初始化为长度减1。
5. 编写一个循环来判断开头和结尾指针的位置,如果开头指针小于结尾指针,执行以下操作:
- 对比开头和结尾指针所指向的字符,如果它们不相等,则该字符串不是回文,输出相应的信息,然后退出循环。
- 如果字符相等,则将开头指针向后移动一位,结尾指针向前移动一位。
6. 如果循环正常结束,说明字符串是回文,输出相应的信息。
以下是一个简单的范例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int length, start, end;
printf("请输入字符串:");
scanf("%s", str);
length = strlen(str);
start = 0;
end = length - 1;
while (start < end) {
if (str[start] != str[end]) {
printf("该字符串不是回文!");
return 0;
}
start++;
end--;
}
printf("该字符串是回文!");
return 0;
}
```
该代码首先获取用户输入的字符串,然后计算字符串长度。接下来,通过比较开头和结尾指针所指向的字符来判断该字符串是否回文。如果字符不相等,则输出相应信息表示该字符串不是回文;如果循环正常结束,则输出相应信息表示该字符串是回文。
用栈判断一个字符是不是回文的C语言代码
在C语言中,我们可以使用两个栈来判断一个字符串是否是回文。首先将字符串的一半字符压入第一个栈,然后将另一半字符压入第二个栈。接下来,我们逐一对两个栈顶的字符进行比较,如果所有字符都匹配,则该字符串是回文;如果不匹配,则不是。下面是简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 定义栈结构体
typedef struct {
char* data;
int top;
int size;
} Stack;
// 初始化栈
Stack initStack(int capacity) {
Stack s;
s.data = (char*)malloc(capacity * sizeof(char));
s.top = -1;
s.size = capacity;
return s;
}
// 入栈操作
void push(Stack* s, char c) {
if (s->top == s->size - 1) {
printf("Stack overflow.\n");
return;
}
s->data[++(s->top)] = c;
}
// 出栈操作
char pop(Stack* s) {
if (s->top == -1) {
printf("Stack underflow.\n");
return '\0';
}
return s->data[s->top--];
}
// 判断字符串是否是回文
bool isPalindrome(char str[]) {
Stack stack1, stack2;
int len = strlen(str);
// 将一半字符压入stack1
for (int i = 0; i < len / 2; ++i) {
push(&stack1, str[i]);
}
// 另一半字符倒序压入stack2
for (int j = len - 1; j >= len / 2; --j) {
push(&stack2, str[j]);
}
while (!stack1.is_empty() && !stack2.is_empty()) { // 当两个栈都不为空
if (pop(&stack1) != pop(&stack2)) {
return false;
}
}
return true;
}
int main() {
char test[] = "madam";
bool result = isPalindrome(test);
if (result)
printf("%s is a palindrome.\n", test);
else
printf("%s is not a palindrome.\n", test);
return 0;
}
阅读全文