题目:
链接:字符逆序__牛客网
来源:牛客网
将一个字符串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; }
实现效果: