题目:
链接:字符逆序__牛客网
来源:牛客网
将一个字符串str的内容颠倒过来,并输出。
输入描述:
输入一个字符串,可以有空格
输出描述:
输出逆序的字符串
示例1
输入
I am a student输出
tneduts a ma I示例2
输入
nowcoder输出
redocwon
=========================================================================
思路:
总体思路:
(一).
创建 字符数组str :
char str[10001] = { 0 };
输入字符串:
gets(str); -- 输入数组数据,gets可以把空格也读入
求输入的字符串长度:
int len = strlen(str); -- 使用 strlen()函数 获取字符串长度,需要包含头文件<string.h>
(二).
进行逆序:使用左右指针 left 和 right
创建左右指针:
char* left = str; -- 左指针
char* right = str + len -1; -- 右指针
使用 while循环 配合 左右指针 进行字符串逆序:
使用指针逆序的思路 和 使用下标逆序的思路 是一致的,
交换两个元素需要有一个临时变量,
交换一次就调整一次指针位置
第一步:
(1).
创建 字符数组str :
char str[10001] = { 0 };
(2).
输入字符串:
gets(str); -- 输入数组数据,gets可以把空格也读入
(3).
求输入的字符串长度:
int len = strlen(str); -- 使用 strlen()函数 获取字符串长度,需要包含头文件<string.h>
实现代码:
#include <stdio.h> #include <string.h> int main() {//创建 字符数组str :char str[10001] = { 0 };//输入字符串:gets(str); //输入数组数据,gets可以把空格也读入//求输入的字符串长度:int len = strlen(str); //记得包含头文件<string.h>return 0; }
实现图片:
第二步:
进行逆序:使用左右指针 left 和 right
(1).
创建左右指针:
char* left = str; -- 左指针
char* right = str + len -1; -- 右指针
(2).
使用 while循环 配合 左右指针 进行字符串逆序:
使用指针逆序的思路 和 使用下标逆序的思路 是一致的,
交换两个元素需要有一个临时变量,
交换一次就调整一次指针位置
(3).
进行打印
实现代码:
#include <stdio.h> #include <string.h> int main() {//创建 字符数组str :char str[10001] = { 0 };//输入字符串:gets(str); //输入数组数据,gets可以把空格也读入//求输入的字符串长度:int len = strlen(str); //记得包含头文件<string.h>//创建左右指针:char* left = str; //左指针char* right = str + len -1; //右指针//使用 while循环 配合 左右指针 进行字符串逆序:while (left < right)//两指针中间还有值就继续逆序{//使用一个临时变量进行两个元素的逆序char tmp = *left; //使用 解引用符号* 获取指针内容*left = *right;*right = tmp;//逆序完一次后就调整一次指针位置left++;right--;}//进行打印:printf("%s\n", str);return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> #include <string.h> int main() {//创建 字符数组str :char str[10001] = { 0 };//输入字符串:gets(str); //输入数组数据,gets可以把空格也读入//求输入的字符串长度:int len = strlen(str); //记得包含头文件<string.h>//创建左右指针:char* left = str; //左指针char* right = str + len -1; //右指针//使用 while循环 配合 左右指针 进行字符串逆序:while (left < right)//两指针中间还有值就继续逆序{//使用一个临时变量进行两个元素的逆序char tmp = *left; //使用 解引用符号* 获取指针内容*left = *right;*right = tmp;//逆序完一次后就调整一次指针位置left++;right--;}//进行打印:printf("%s\n", str);return 0; }
实现效果: