C语言:使用指针使字符串逆序

news/2024/11/29 13:35:26/

题目:

链接:字符逆序__牛客网
来源:牛客网
           

将一个字符串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;
}

实现效果:


http://www.ppmy.cn/news/541696.html

相关文章

内存空间3种扩容方式(含虚拟内存)

内存空间扩容 思考&#xff1a;GTA游戏60GB&#xff0c;讲道理运行前应该把60GB数据放入内存&#xff0c;然而我的电脑只有4GB&#xff0c;但是为什么游戏可以正常运行&#xff1f; 1.覆盖技术&#xff08;单个进程&#xff09; 覆盖技术的思想&#xff1a;将程序分为多个段&am…

虚拟内存技术的实现

虚拟内存技术的实现需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现有以下三种方式&#xff1a; 1. 请求分页存储管理&#xff1a;建立在分页管理之上&#xff0c;为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存…

2020-09-05:虚拟内存知道么?什么时候使用虚拟内存?虚拟内存除了扩大内存还有什么用?

福哥答案2020-09-05&#xff1a; 答案来自此链接 我们平时使用的电脑中有一个虚拟内存&#xff0c;但是大家对虚拟内存的了解不是很多&#xff0c;今天小编就大家说一说这个虚拟内存&#xff0c;让大家明白什么是虚拟内存&#xff0c;虚拟内存有什么用&#xff0c;以及虚拟内…

688-内存管理和虚拟内存讲解大全

为什么要进行内存管理&#xff1f; &#xff08;1&#xff09;仓库管理 对于仓库来说&#xff0c;如果没有合理地管理&#xff0c;随意的乱堆乱放&#xff0c;大量的空间会因为无法被充分利用而浪费&#xff0c;但如果对仓库空间进行合理的规划和分配&#xff0c;物体移走后也…

虚拟内存设置(可扩展板载内存)

一、作用和原理 1、原理&#xff1a;在硬盘上划分出一个空间模拟成内存空间来使用&#xff0c;可以使得应用程序认为拥有连续的可用的内存&#xff08;一个连续完整的地址空间&#xff09;&#xff0c;而实际上&#xff0c;虚拟内存通常是被分隔成多个物理内存碎片&#xff0c…

【Ubuntu16.04 扩大内存空间 设置虚拟内存 史上最详细 】

一、开发环境 开发环境&#xff1a;Ubuntu16.04 二、设置虚拟内存 1、新建内存 新建16G内存 &#xff0c;一般为真机的两倍 sudo fallocate -l 16G /icedustpan2、查看虚拟内存 ls -lh /icedustpan可以看到一个16G的虚拟内存文件 3、设置虚拟内存权限 sudo chmod 600 /i…

虚拟内存与物理内存与内存碎片-杂谈

内存杂谈 虚拟内存与物理内存 为什么要有虚拟内存??? 1.每个进程有独立的虚拟地址空间&#xff0c;进程访问的虚拟地址并不是真正的物理地址(每个进程都假设自己看到的是完整的从0开始的内存) 2.程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。当物理内存…

虚拟存储器与虚拟内存

1.为什么需要虚拟存储器&#xff1f; 程序在os中能够执行&#xff0c;需要经过&#xff0c;编译-链接-装入 在没有虚拟存储器之前&#xff0c;源程序在gcc –o 后生成的文件是可执行目标程序a.out&#xff0c;每条指令都有一个逻辑地址 32位。它存在硬盘上。 要执行时&#…