C:每日一题:逆序字符串(牛客)

news2024/11/22 22:38:23

一、题目来源

字符逆序__牛客网 (nowcoder.com)

二、题目介绍

将一个字符串str的内容颠倒过来,并输出。

三、思路分析

  1. 要将字符串str存储起来,可以使用字符数组或者字符指针的方式存储起来;
  2. 从题目中我们知道该题需要我们自己输入字符串,并且字符串中间还要有空格,所以,我们不能使用scanf输入字符串,需要使用fgets函数来实现字符串的输入;
  3. 需要获得字符串的长度,在C语言中,可以使用strlen函数,不过使用记得包含头文件<string.h>
  4. 创建一个函数con来实现字符串逆序的操作;
  5. 实现逆序的操作:使用循环或者使用指针。

四:知识介绍

1. 字符串存储方式

1 使用字符数组:

char str[8000];//[字符个数]

2 使用字符指针:

char* str;
int size = 0; //size指输入字符的最大数

2、strlen

 strlen是用来计算字符串长度的,返回值是size_t

3. 字符串的输入

1 使用scanf输入:

char str[8000];//[字符个数]
scanf("%s\n",str)//这里不用&是因为数组名是首元素地址

2 使用fgets函数输入:

fgets函数用于从指定的文件流中读取一行字符串。

函数原型:char *fgets(char *str, int n, FILE *stream);

参数介绍

  • str:指向要存储读取字符串的字符数组。
  • n:指定读取的最大字符数(包括字符串结束符 '\0' )。
  • stream:指定要读取的文件流,通常使用 stdin 表示标准输入(即键盘输入)。

注意事项

  • 由于 fgets会保留换行符,如果后续处理不需要换行符,可以手动去除。
  • 要确保提供的字符数组 str 有足够的空间来存储读取的字符串,以避免缓冲区溢出。

代码演示:

fgets(str, n, stdin);
    size_t len = strlen(str);
    //检查字符串末尾的字符(即下标为 len - 1 的字符)是否为换行符。
    //如果是的话,就将它替换为\0
    if (str[len - 1] == '\n') 
    {
        str[len - 1] = '\0';
    }

五、逐步实现

1.字符串在内存的存储与输入:

字符数组:

  char str[8000];
	fgets(str, 8000, stdin);
   size_t len = strlen(str);
   if (str[len - 1] == '\n') 
   {
       str[len - 1] = '\0';
   }

注意:这里8000是为了能够确保提供的字符数组 str 有足够的空间来存储读取的字符串

关于字符指针这个方法后面再说,今天这道题存储和输入就使用字符数组吧!

2.获取字符串长度

size_t len = strlen(str)

3.调用函数con

cont(str,len);

两个参数:str数组名,len字符串长度

void cont(char* str, size_t len)  //指针接收

4.字符串逆序实现

  1.使用for循环

for (int i = len - 1; i >= 0; i--)//从后向前打印每一个字符串
{
	printf("%c", str[i]);
}

  2.使用while实现

    char* begin = str;
    char* end = str + strlen(str) - 1; 
    while (begin < end)
    {
       char temp = *begin;
        *begin = *end;
        *end = temp;
        begin++;
        end--;
    }

六、函数实现

1. main函数

int main() 
{
    char str[8000];
    fgets(str, 8000, stdin);
     size_t len = strlen(str);
    if (str[len - 1] == '\n') 
    {
       str[len - 1] = '\0';
    }
    cont(str,len);	
    printf("%s\n", str);
    return 0;
}

2. con函数

法1:

void cont(char* str,size_t len)
{
	//size_t len = strlen(str);
	for (int i = len - 1; i >= 0; i--)
	{
		printf("%c", str[i]);
	}
}

法2:

void cont(char* str, size_t len)
{
    char* begin = str;
    char* end = str + strlen(str) - 1;

    while (begin < end)
    {
        char temp = *begin;
        *begin = *end;
        *end = temp;
        begin++;
        end--;
    }
}

七、完整代码

第一种:

#include <stdio.h>
#include <string.h>
void cont(char* str,size_t len)
{
	//size_t len = strlen(str);
	for (int i = len - 1; i >= 0; i--)
	{
		printf("%c", str[i]);
	}
}
int main()
{
    char str[8000];
	fgets(str, 8000, stdin);
	    size_t len = strlen(str);
	    if (str[len - 1] == '\n') 
	    {
	        str[len - 1] = '\0';
	    }
	cont(str,len);	
	
	return 0;
}

第二种:

#include <stdio.h>
#include <string.h>
void cont(char* str, size_t len)
{
    char* begin = str;
    char* end = str + strlen(str) - 1;

    while (begin < end)
    {
        char temp = *begin;
        *begin = *end;
        *end = temp;
        begin++;
        end--;
    }
}
int main() 
{
    char str[8000];
    fgets(str, 8000, stdin);
     size_t len = strlen(str);
    if (str[len - 1] == '\n') 
    {
       str[len - 1] = '\0';
    }
    cont(str,len);	
    printf("%s\n", str);
    return 0;
}

结果展示:

 

八、一些闲话 

标题名称虽然是每日一题,但是有时候小编虽然题目写了,但是没有整理,就来不及发文章了,所以没法做到每日一篇,还请见谅!下期再见!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++优先级队列priority_queue(容器适配器)

目录 一、优先级队列简述 二、优先级队列的大堆、小堆&#xff08;仿函数控制&#xff09; 三、优先级队列与sort函数中仿函数区别 四、优先级队列的接口 一、优先级队列简述 priority_queue是一个类模板 二、优先级队列的大堆、小堆&#xff08;仿函数控制&#xff09; p…

LLM 量化算法AutoRound 0.3 发布及原理浅析

这里写自定义目录标题 AutoRound V0.3 特性原理浅析其他工作AutoRound 原理 AutoRound&#xff08;https://github.com/intel/auto-round&#xff09;在Llama3.1-8B-Instruct上效果明显优于AWQ/GPTQ等方法&#xff0c;在10个任务的平均准确率上我们以63.93%由于AWQ的63.15%和GP…

Qt登录窗口

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),btn(new QPushButton("取消", this)),login_btn(new QPushButton("登录", this)) { ui->setupUi(this);thi…

R 语言学习教程,从入门到精通,R 数据重塑(15)

1、R 数据重塑 合并数据框 R 语言合并数据框使用 merge() 函数。 merge() 函数语法格式如下&#xff1a; # S3 方法 merge(x, y, …) # data.frame 的 S3 方法 merge(x, y, by intersect(names(x), names(y)),by.x by, by.y by, all FALSE, all.x all, all.y all,sort…

【JS逆向学习】AES加密文本如何在python中自我解密

一、查看解密后的内容 二、未解密前的内容 三、分析网页 import requestsheaders = {Accept: application/json, text/plain, */*,Accept-Language: zh-CN,zh;q=0.9,Cache-Control: no-cache,Connection: keep-alive,Origin: https://www.swguancha.com,Pragma: no-cache,Ref…

喷淋温湿度氙灯老化试验箱

氙灯试验箱是一种模拟全阳光光谱的试验设备&#xff0c;主要用于测试材料在紫外光、可见光和红外光等不同光谱环境下的耐候性能。它采用氙弧灯作为光源&#xff0c;通过设定各种试验参数&#xff0c;如温度、湿度和辐照度等&#xff0c;来模拟自然环境中的光照条件&#xff0c;…

使用排名前三的华为解锁工具来绕过忘记的华为锁屏密码

如果您在未使用“设置”应用的情况下将华为手机恢复出厂设置&#xff0c;同时启用了出厂重置保护 (FRP) 安全功能&#xff0c;您的华为设备将卡在帐户验证界面。您可以使用帐户凭据轻松绕过此锁定。但是&#xff0c;假设您无法回忆起旧的帐户信息。在这种情况下&#xff0c;您应…

Apache Flink中TaskManager,SubTask,TaskSlot,并行度之间的关系

Apache Flink 中Application 与 Job 一个完整的Flink Application 一般组成如下&#xff1a; Source 数据来源Transformation 数据转换处理等Sink 数据传输 Flink 中一个或者多个Operator&#xff08;算子&#xff09;组合对数据进行转换形成一个 Transformation&#xff0c;一…

优化业务流程的关键:深入探讨BPA流程设计

在当前竞争激烈的商业环境中&#xff0c;业务流程自动化&#xff08;BPA&#xff09;已经成为企业提升效率、减少成本和提高业务灵活性的关键工具。今天&#xff0c;我们将深入探讨BPA流程设计的重要性及其实施步骤&#xff0c;为企业提供实用的指南。 什么是BPA&#xff1f; …

spring揭秘00-ioc定义与ioc容器及集成工厂模式

文章目录 【README】【1】IOC概述【1.1】ioc定义【1.2】IOC三种依赖注入方式 【2】ioc服务提供者【2.1】 ioc服务提供者职责【2.2】ioc服务提供者如何管理对象间依赖关系 【3】IOC容器【3.1】BeanFactory 【4】集成工厂模式创建bean【4.1】静态工厂方法【4.2】非静态工厂方法【…

QT+CUDA 同时编译Qt和CUDA代码

工作需要把cuda的代码移植到QT中&#xff0c;和Qt项目一起编译&#xff0c;这里记录一下。 前期准备 1.安装CUDA 电脑需要安装好 CUDA&#xff0c;可以看我的这篇文章安装&#xff1a;Windows和WSL安装CUDA-CSDN博客 使用命令 nvcc --version 查看安装的 CUDA 版本。 CUDA 的默…

通过API构建开放式外卖系统平台:合作伙伴的集成与管理

随着外卖行业的迅速发展&#xff0c;外卖系统平台的开放性和可扩展性变得尤为重要。通过API构建一个开放式的外卖系统平台&#xff0c;企业可以更轻松地与合作伙伴进行集成和管理。本文将探讨如何通过API构建开放式外卖系统平台&#xff0c;并通过代码示例展示与合作伙伴的集成…

md-editor-v3适配VUE3的MarkDown编辑器-好用-简单-免费

官方文档&#xff1a; https://imzbf.github.io/md-editor-v3/zh-CN/indexhttps://imzbf.github.io/md-editor-v3/zh-CN/index 效果演示&#xff1a;&#xff08;支持黑暗模式切换&#xff09; toolbar包括&#xff1a; [bold,underline,italic,strikeThrough,title,sub,sup…

系统编程 day13 进程5

前提&#xff1a; 信息量&#xff1a;线程间有序的进行工作 资源的个数 机制&#xff1a;描述可使用资源的个数 操作&#xff1a; p操作&#xff1a;使用这个资源&#xff0c;表示资源个数减1 v操作&#xff1a;产生这个资源&#xff0c;表示资源个数加1 p操作逻辑&…

CoCoOp(论文解读):Conditional Prompt Learning for Vision-Language Models

摘要 随着预训练的视觉语言模型&#xff08;如 CLIP&#xff09;的兴起&#xff0c;研究使这些模型适应下游数据集的方法变得至关重要。最近CoOp方法将NLP领域中的提示学习引入到视觉领域中&#xff0c;来调整预训练的视觉语言模型。具体来说&#xff0c;CoOp 将提示中的上下文…

DataGridView用法合集(9):添加控件

目录 45. DataGridView列中显示选择框CheckBox 46. DataGridView中显示下拉框ComboBox 47. DataGridView单击打开下拉框 48. DataGridView中显示按钮 49. DataGridView中显示链接 50. DataGridView中显示图像 45. DataGridView列中显示选择框CheckBox [VB.NET] 添加Chec…

MySQL5.7数据库---入门教程(小白教程)

一、MySQL安装 本文以MySQL5.7安装为例。在设置完root密码和添加一个用户后&#xff0c;一路默认。 1、 2、通过点击红圈里的箭头选择对应的版本。 3、 4、端口&#xff08;Port&#xff09;一般默认不需要更改。 5、 二、配置环境变量 配置环境变量可以方便在win系统中cmd…

HarmonyOS 端云一体化 -- 项目初始化

HarmonyOS 端云一体化 – 项目初始化 端云一体化官方简介 本文档基于 api9 编写本来我想用最新版的api搞&#xff0c;但是在 AppFallery Connect 上创建项目的时候有bug&#xff0c;没没办法成功创建应用&#xff0c;无奈只能切换到 api9 版本。 1.新建项目 1.1 登录华为官…

突破大模型极限!GLM-4-long百万长文本模型上线bigmodel.cn

最近业务上多了长文本的需求&#xff0c;因为要在prompt里面塞进比较多的rag内容&#xff0c;以供决策&#xff0c;且这些召回的内容&#xff0c;都有可能用到。这非常考验大模型的长文本能力&#xff0c;技术选型上都要着重考察这部分。 正巧&#xff0c;上次清影试用后&…

游戏开放式新手引导框架设计

强制性引导&#xff1a;只能点某个按钮 优&#xff1a;程序简单 缺&#xff1a; 玩家体验差 开放式引导&#xff1a;不强制点 优&#xff1a;玩家体验好 缺&#xff1a; 程序复杂 需求分析&#xff1a; 1.开放式引导&#xff0c;引导是到达某个条件后进行一系列行为&#xff08…