字符串数据类型的基本运算

任务描述
本关任务:从后台输入任意三个字符串,求最大的字符串。

相关知识
字符串本身是存放在一块连续的内存空间中,并以’\0’作为字符串的结束标记。

字符指针变量本身是一个变量,用于存放字符串的第 1 个字符的地址。

字符数组是由若干个数组元素组成的,它可用来存放字符串的所有字符。

字符串类型的数据不能像数值型数据一样进行加减乘除等运算。常见的字符串类型数据的运算有求字符串的长度、字符串的复制、比较两个字符串的大小、字符串的连接等。

字符串的运算比数值型数据的运算复杂,为减轻编程的负担,提高效率,C 语言提供了丰富的字符串处理函数来实现字符串的运算,对字符串进行整体操作。

使用字符串处理函数应包含头文件"string.h",几种常见运算有:

求字符串长度函数:strlen( )
字符串拷贝函数:strcpy( )
字符串连接函数:strcat( )
字符串比较函数:strcmp( )
求一个字符串的长度
字符串的长度是字符串中所包含的字符个数。例如:"CHINA"的长度是 5,"C program"的长度是 9。

#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
printf(“input string:\n”);
gets(str);
printf(“output string:\n”);
puts(str);
printf(“数组大小=%d\n”,sizeof(str));
printf(“字符串长度=%d\n”,strlen(str));
return 0;
}
运行结果:

input string:
Hubei Huangshi
output string:
Hubei Huangshi
数组大小=20
字符串长度=14

注意区分字符数组的长度和字符串的长度,长度为20的字符数组可以存放长度小于等于19的字符串。

字符串的拷贝
对字符数组只能在定义的同时初始化,不能先定义字符数组,再使用赋值语句为一个字符数组赋值。

char s[15];
s = “C Program”; //编译错误
要将字符串"C Program"存入到数组s中,可以通过调用字符串拷贝函数strcpy()函数来实现。请看示例,从键盘输入两个字符串,交换后输出这两个字符串的值。

#include<stdio.h>
#include<string.h>
int main()
{
char st1[15],st2[15],t[15];
printf(“Please input 2 string:\n”);
gets(st1);
gets(st2);
strcpy(t, st1); //把字符数组st1中的字符串拷贝到t中,串结束标志’\0’也一同拷贝
strcpy(st1,st2); //把字符数组st2中的字符串拷贝到st1
strcpy(st2,t); //把字符数组t中的字符串拷贝到st2
printf(“Now string is:\n”);
puts(st1);
puts(st2);
return 0;
}
运行结果:

Please input 2 string:
Hubei Huangshi
Hubei Wuhan
Now string is:
Hubei Wuhan
Hubei Huangshi

字符串的连接
字符串这种类型的数据经常需要将两个字符串连接起来,把一个字符串接到另一个字符串的后面,得到一个新字符串。例如:将"Hubei"和"Huangshi"连接,可以得到"HubeiHuangshi"这个新字符串。

请看示例,从键盘输入自己的籍贯和名字,试将它们连接在一起成为一个字符串。

#include<stdio.h>
#include<string.h>
int main( )
{
char str1[30],str2[10];
printf(“Please input 2 string:\n”);
gets(str1);
gets(str2);
strcat(str1,str2);// 把str2中的字符串连接到str1中字符串的后面,新串最后加’\0’
printf(“%s\n”,str1);
return 0;
}
运行结果:
Please input 2 string:
Hubei Huangshi
Zhang San
Hubei HuangshiZhang San

说明:str1必须足够大,否则不能全部装入被连接的字符串。

比较两个字符串的大小
字符串在计算机中是可以比较大小的,字符串比较的规则:就是将两个字符串自左至右逐个比较对应位置上字符的ASCII码值,直到出现不同的字符或者达到某个字符串的结尾为止,若全部字符相同,则认为两个字符串相等;若出现不相同的字符,则以第一对不相同的字符的比较结果为准。

例如: "AC"与"B"比较,因为A的ASCII码值比B小,那么后面的字符就不再比较了 ,字符串"AC"比字符串"B"小;"computer"与"Computer"比较,因为小写c的ASCII码值比大写C大,所以"computer "比"Computer " 大。

库函数strcmp(字符串1,字符串2)的功能:按从左向右顺序逐个比较两串字符的ASCII码,直到遇到不同字符或’\0’为止,函数返回值为int型整数,规则如下:

若字符串1==字符串2,返回零;
若字符串1>字符串2,返回正整数;
若字符串1<字符串2,返回负整数。
注意:对两个字符串比较,不能用以下形式:

if( str1==str2) printf(“yes”);
而只能用以下语句:

if( strcmp(str1, str2) == 0) printf(“yes”);
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,从后台获取任意三个字符串,输出最大的字符串。

提示:“从键盘输入三个字符串,求最大的字符串”与“从键盘输入三个整数,求最大的整数”两者算法思想是一致的,只是处理的数据对象不是整数,而是字符串。

测试说明
平台会对你编写的代码进行测试。

测试输入:
Huangshi
Xiangyang
Wuhan
预期输出:
Xiangyang

开始你的任务吧,祝你成功!

#include<stdio.h>
#include<string.h>
int main()
{ char st1[15],st2[15],st3[15],max[15];/*****输入3个字符串*****//********** Begin **********/gets(st1);gets(st2);gets(st3);/********** End **********//*****求3个字符串中的最大字符串*****//********** Begin **********/strcpy(max,st1);if(strcmp(max,st2)<0)strcpy(max,st2);if(strcmp(max,st3)<0)strcpy(max,st3);puts(max);/********** End **********/return 0;
}

非常简单。

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

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

相关文章

Ubuntu 22.04 一键部署openManus

openManus 前言 OpenManus-RL,这是一个专注于基于强化学习(RL,例如 GRPO)的方法来优化大语言模型(LLM)智能体的开源项目,由来自UIUC 和 OpenManus 的研究人员合作开发。 前提要求 安装deepseek docker方式安装 ,windows 方式安装,Linux安装方式

PDF 转图片,一行代码搞定!批量支持已上线!

大家好&#xff0c;我是程序员晚枫。今天我要给大家带来一个超实用的功能——popdf 现在支持 PDF 转图片了&#xff0c;而且还能批量操作&#xff01;是不是很激动&#xff1f;别急&#xff0c;我来手把手教你玩转这个功能。 1. 一行代码搞定单文件转换 popdf 的核心就是简单暴…

《比特城的机密邮件:加密、签名与防篡改的守护之战》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 第一章&#xff1a;风暴前的密令 比特城的议会大厅内&#xff0c;首席长老艾德文握着一卷足有半人高的羊皮纸&#xff0c;眉头紧锁。纸上是即将颁布的《新纪元法典》——这份文件不仅内…

8.用户管理专栏主页面开发

用户管理专栏主页面开发 写在前面用户权限控制用户列表接口设计主页面开发前端account/Index.vuelangs/zh.jsstore.js 后端Paginator概述基本用法代码示例属性与方法 urls.pyviews.py 运行效果 总结 欢迎加入Gerapy二次开发教程专栏&#xff01; 本专栏专为新手开发者精心策划了…

http://noi.openjudge.cn/_2.5基本算法之搜索_1804:小游戏

文章目录 题目深搜代码宽搜代码深搜数据演示图总结 题目 1804:小游戏 总时间限制: 1000ms 内存限制: 65536kB 描述 一天早上&#xff0c;你起床的时候想&#xff1a;“我编程序这么牛&#xff0c;为什么不能靠这个赚点小钱呢&#xff1f;”因此你决定编写一个小游戏。 游戏在一…

发生梯度消失, 梯度爆炸问题的原因,怎么解决?

目录 一、梯度消失的原因 二、梯度爆炸的原因 三、共同的结构性原因 四、解决办法 五、补充知识 一、梯度消失的原因 梯度消失指的是在反向传播过程中&#xff0c;梯度随着层数的增加指数级减小&#xff08;趋近于0&#xff09;&#xff0c;导致浅层网络的权重几乎无法更新…

【USRP】srsRAN 开源 4G 软件无线电套件

srsRAN 是SRS开发的开源 4G 软件无线电套件。 srsRAN套件包括&#xff1a; srsUE - 具有原型 5G 功能的全栈 SDR 4G UE 应用程序srsENB - 全栈 SDR 4G eNodeB 应用程序srsEPC——具有 MME、HSS 和 S/P-GW 的轻量级 4G 核心网络实现 安装系统 Ubuntu 20.04 USRP B210 sudo …

ChatGPT 4:解锁AI文案、绘画与视频创作新纪元

文章目录 一、ChatGPT 4的技术革新二、AI文案创作&#xff1a;精准生成与个性化定制三、AI绘画艺术&#xff1a;从文字到图像的神奇转化四、AI视频制作&#xff1a;自动化剪辑与创意实现五、知识库与ChatGPT 4的深度融合六、全新的变革和机遇《ChatGPT 4 应用详解&#xff1a;A…

在js中数组相关用法讲解

数组 uniqueArray 简单数组去重 /*** 简单数组去重* param arr* returns*/ export const uniqueArray <T>(arr: T[]) > [...new Set(arr)];const arr1 [1,1,1,1 2, 3];uniqueArray(arr); // [1,2,3]uniqueArrayByKey 根据 key 数组去重 /*** 根据key数组去重* …

RT-Thread ulog 日志组件深度分析

一、ulog 组件核心功能解析 轻量化与实时性 • 资源占用&#xff1a;ulog 核心代码仅需 ROM<1KB&#xff0c;RAM<0.2KB&#xff0c;支持在资源受限的MCU&#xff08;如STM32F103&#xff09;中运行。 • 异步/同步模式&#xff1a;默认采用异步环形缓冲区&#xff08;rt_…

T113s3远程部署Qt应用(dropbear)

T113-S3 是一款先进的应用处理器&#xff0c;专为汽车和工业控制市场而设计。 它集成了双核CortexTM-A7 CPU和单核HiFi4 DSP&#xff0c;提供高效的计算能力。 T113-S3 支持 H.265、H.264、MPEG-1/2/4、JPEG、VC1 等全格式解码。 独立的硬件编码器可以编码为 JPEG 或 MJPEG。 集…

12.青龙面板自动化我的生活

安装 docker方式 docker run -dit \ -v /root/ql:/ql/data \ -p 5700:5700 \ -e ENABLE_HANGUPtrue \ -e ENABLE_WEB_PANELtrue \ --name qinglong \ --hostname qinglong \ --restart always \ whyour/qinglongk8s方式 https://truecharts.org/charts/stable/qinglong/ he…

Maven 远程仓库推送方法

步骤 1&#xff1a;配置 pom.xml 中的远程仓库地址 在项目的 pom.xml 文件中添加 distributionManagement 配置&#xff0c;指定远程仓库的 URL。 xml 复制 <project>...<distributionManagement><!-- 快照版本仓库 --><snapshotRepository><id…

Spring Boot 日志 配置 SLF4J 和 Logback

文章目录 一、前言二、案例一&#xff1a;初识日志三、案例二&#xff1a;使用Lombok输出日志四、案例三&#xff1a;配置Logback 一、前言 在开发 Java 应用时&#xff0c;日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息&#xff0c;帮助开发者…

JS API 事件监听

焦点事件案例&#xff1a;搜索框激活下拉菜单 事件对象 事件对象存储事件触发时的相关信息 可以判断用户按键&#xff0c;点击元素等内容 如何获取 事件绑定的回调函数中的第一个形参就是事件对象 一般命名为e,event 事件对象常用属性 type类型 click mouseenter client…

DDD与MVC扩展能力对比

一、架构设计理念的差异二、扩展性差异的具体表现三、DDD扩展性优势的深层原因四、MVC扩展性不足的典型场景五、总结&#xff1a;架构的本质与选择六、例子1&#xff09;场景描述2&#xff09;MVC实现示例&#xff08;三层架构&#xff09;3&#xff09;DDD实现示例&#xff08…

针对 SQL 查询中 IN 子句性能优化 以及 等值 JOIN 和不等值 JOIN 对比 的详细解决方案、代码示例及表格总结

以下是针对 SQL 查询中 IN 子句性能优化 以及 等值 JOIN 和不等值 JOIN 对比 的详细解决方案、代码示例及表格总结&#xff1a; 问题 1&#xff1a;IN 的候选值过多&#xff08;如超过 1000 个&#xff09; 问题描述 当 IN 列表中的值过多时&#xff0c;SQL 会逐个比较每个值…

手部穴位检测技术:基于OpenCV和MediaPipe的实现

手部穴位检测是医学和健康管理领域的重要技术之一。通过准确识别手部的关键穴位,可以为中医诊断、康复治疗以及健康监测提供支持。本文将介绍一种基于OpenCV和MediaPipe的手部穴位检测方法,展示如何利用计算机视觉技术实现手部关键点的检测,并进一步标注手部的穴位位置。 技…

Day20 -自动化信息收集工具--ARL灯塔的部署

准备&#xff1a; 纯净的Docker环境 ARL的包 一、Docker的部署 00x1 更新系统包 sudo apt update 00x2 安装必要的依赖包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下载docker和docker-compose apt-get install do…

sqlalchemy查询json

第一种&#xff1a;字段op是json格式&#xff1a; {"uid": "cxb123456789","role": 2,"op_start_time": 1743513707504,"op_end_time": 1743513707504,"op_start_id": "op_001","op_end_id"…