C语言中将一个字符串中的字符逆序存放。如字符串为“abcde",则逆序存放后应为"edcba"
时间: 2024-03-01 18:50:37 浏览: 80
可以使用两个指针,一个指向字符串的开头,一个指向字符串的结尾,然后交换它们指向的字符,直到两个指针相遇。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
int len = strlen(str);
char* start = str;
char* end = str + len - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "abcde";
reverse_string(str);
printf("%s\n", str); // 输出 edcba
return 0;
}
```
相关问题
C语言将一个字符串中的字符逆序存放。如字符串为“abcde",则逆序存放后应为"edcba"。
可以使用指针来实现字符串中字符的逆序存放。具体的实现步骤如下:
1. 定义一个指向字符串的指针变量p和一个指向字符串末尾的指针变量q;
2. 使用while循环,将指针变量p和q所指向的字符交换,并将指针p向后移动一位,指针q向前移动一位,直到p>=q;
3. 最后将字符串首尾字符交换即可。
下面是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
char *p = str;
char *q = str + strlen(str) - 1;
while (p < q) {
char temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
int main() {
char str[] = "abcde";
printf("Before reverse: %s\n", str);
reverse(str);
printf("After reverse: %s\n", str);
return 0;
}
```
输出结果为:
```
Before reverse: abcde
After reverse: edcba
```
用C语言数据结构实现字符串逆序输出 例abcde输出为edcba
可以使用栈这种数据结构来实现字符串的逆序输出。
具体实现步骤如下:
1. 定义一个栈,用于存储字符串中的每个字符。
2. 遍历字符串中的每个字符,将其依次压入栈中。
3. 遍历完字符串后,依次从栈中弹出字符,并打印出来,即可实现字符串的逆序输出。
以下是C语言代码实现:
```
#include<stdio.h>
#define MAX_SIZE 100
//定义栈结构体
typedef struct Stack{
char data[MAX_SIZE];
int top;
}Stack;
//初始化栈
void Init(Stack *S){
S->top = -1;
}
//判断栈是否为空
int IsEmpty(Stack *S){
return S->top == -1;
}
//判断栈是否已满
int IsFull(Stack *S){
return S->top == MAX_SIZE - 1;
}
//压入栈顶
void Push(Stack *S, char ch){
if(IsFull(S)){
printf("栈已满,无法插入!");
}else{
S->data[++S->top] = ch;
}
}
//弹出栈顶
char Pop(Stack *S){
if(IsEmpty(S)){
printf("栈已空,无法弹出!");
return '\0';
}else{
return S->data[S->top--];
}
}
//字符串逆序输出函数
void Reverse(char *str){
Stack S;
Init(&S);
int i;
for(i=0; str[i]!='\0'; i++){
Push(&S, str[i]);
}
for(i=0; !IsEmpty(&S); i++){
str[i] = Pop(&S);
}
str[i] = '\0';
}
//测试 main 函数
int main(){
char str[MAX_SIZE];
printf("请输入一个字符串:");
scanf("%s", str);
Reverse(str);
printf("逆序输出结果为:%s", str);
return 0;
}
```