用c语言中用字符串函数参数实现一个字符串逆序存放功能
时间: 2024-05-24 08:10:54 浏览: 197
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
int len = strlen(str);
char temp;
for(int i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("原字符串:%s\n", str);
reverse_string(str);
printf("逆序存放后的字符串:%s\n", str);
return 0;
}
相关问题
1.回文(palindrome)是指一个字符串从前面读和从后面读都一样,仅使用若干栈和队列、栈和队列的ADT函数以及若干个int类型和char类型的变量,设计一个算法来判断一个字符串是否为回文。在c语言中用栈和队列实现
在 C 语言中,我们可以利用栈的数据结构来判断一个字符串是否为回文。以下是基本的步骤:
1. **创建一个空栈**,用于存储字符串的一半字符。
2. **遍历字符串**,将第一个到倒数第二个字符依次压入栈中。这是因为回文字符串的首尾字符对称,所以我们只需要比较一半的字符即可。
3. **同时从头和尾开始比较**,取出栈顶元素与当前字符进行比较。如果它们相等,则继续比较下一个;如果不等,则该字符串不是回文。
4. **当所有对应位置的字符都比较完毕且相等**,则字符串是回文;如果还有剩余的字符未比较完,则说明不是回文。
以下是使用 C 语言实现的简化版代码片段:
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 声明一个辅助函数,检查字符是否等于其逆序
bool is_char_palindrome(char ch) {
return ch == ch; // char 和它自身总是相等
}
// 判断整个字符串是否为回文
bool is_palindrome(const char* str) {
int stack_size = 0;
int i = 0;
char stack[50]; // 根据字符串长度动态调整栈大小
while (str[i] != '\0' && str[strlen(str) - 1 - i] != '\0') {
stack[stack_size++] = str[i];
if (!is_char_palindrome(str[i])) {
return false;
}
i++;
}
// 如果我们已经比较了所有对称字符而没有发现不匹配,则它是回文
if (i < strlen(str)) {
return false;
}
while (stack_size > 0) {
if (stack[--stack_size] != str[strlen(str) - 1 - stack_size]) {
return false;
}
}
return true;
}
int main() {
const char* test_strs[] = {"madam", "racecar", "hello"};
for (const char* str : test_strs) {
if (is_palindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
}
return 0;
}
```
阅读全文