c语言-大小写字母的转换

       

目录

方法一:库函数直接转换

1、toupper的测试代码

2、tolower的测试代码 

方法二:通过修改ASCII码值转换 

1、自己实现大写转小写

 2、自己实现小写转大写

结语 


前言:

        在使用c语言写代码时,通常会遇到很多将大小写字母相互转换的场景,比如刷题的时候,常常会让我们将一个字符串中的小写字母转换成大写字母,或者将大写转换成小写,并且规定让我们手撕整个转换过程,不得使用库函数进行转换,这时候往往没有头绪。

        其实转换字母最常用的方法有两种:1、直接调用库里的转换函数。2、对字母的ASCII码值进行加减。具体如下文。

方法一:库函数直接转换

        在c语言的库函数中,提供了两个函数可以直接实现大小写字母的转换,即:tolowertoupper

int tolower ( int c );//接收一个参数,返回一个整形
int toupper( int c );//接收一个参数,返回一个整形

        1、tolower是将写字母转换成写字母,返回转换后的小写字母的ASCII值,若传给c的参数本身就是一个小写字母,则该函数不做任何处理直接返回c的值。

        2、toupper是将写字母转换成写字母,返回转换后的大写字母的ASCII值,若传给c的参数本身就是一个大写字母,则该函数不做任何处理直接返回c的值。

        3、并且tolower和toupper不对非字母的字符做任何处理。

1、toupper的测试代码

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <ctype.h>
int main()
{int i = 0;char str[] = "Test String!!";char c;while (str[i]){c = str[i];//把字符串中的字符给到cc = toupper(c);//将c转换成大写字母并重新赋予cputchar(c);//输出ci++;}return 0;
}

         运行结果:

2、tolower的测试代码 

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <ctype.h>
int main()
{int i = 0;char str[] = "Test String!!";char c;while (str[i]){c = str[i];//把字符串中的字符给到cc = tolower(c);//将c转换成小写字母并重新赋予cputchar(c);//输出ci++;}return 0;
}

        运行结果:

方法二:通过修改ASCII码值转换 

        因为字母本身属于字符,而字符在计算机中是以整形的形式存储的,即字母是以ASCII值的形式存在计算机中的,因此只要搞清楚大小写字母的ASCII码值是多少,然后对他们直接进行加减即可改变字母。(总结:因为字母的存储形式是ASCII码值,因此可以直接对字母进行加减等操作

        如下图ASCII码表所示:

        根据上图所示,所有的大写字母和小写字母他们的ASCII码值都是连续的,所以我们可以直接 用区间的形式来取到所有大写字母的范围,和所有小写字母的范围。

        比如:c >= 'a' && c <= 'z'结果为真,那么c肯定是小写字母中的一个。相反,c >= 'A' && c <= 'Z'结果为真,则c肯定是大写字母中的一个。有了以上的思路就可以自己实现大写字母和小写字母的转换了。

1、自己实现大写转小写

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int i = 0;char str[] = "Test String!!";char c;while (str[i]){c = str[i];//把字符串中的字符给到cif (c >= 'A' && c <= 'Z')//只对大写字母做处理{c += 32;//大写字母+32=对应的小写字母}putchar(c);i++;}return 0;
}

        运行结果:

 2、自己实现小写转大写

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int i = 0;char str[] = "Test String!!";char c;while (str[i]){c = str[i];//把字符串中的字符给到cif (c >= 'a' && c <= 'z')//只对小写字母做处理{c -= 32;//小写字母-32=对应的大写字母}putchar(c);i++;}return 0;
}

        运行结果:

结语 

        以上就是关于字母大小写如何转换的讲解,在做题中一般都是让我们自己手撕一个转换过程,其转换思路就在于字母的ASCII码值之间加减关系,当然库里提供的两个函数也需要了解,因为有些场景下可以使用库函数直接转换,那么直接调用tolower和toupper会很方便,最后希望本文可以给你带来更多的收获!!!

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

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

相关文章

IP定位在公安部门的使用及其重要性

随着信息技术的迅猛发展&#xff0c;互联网已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络犯罪也呈现出日益猖獗的趋势&#xff0c;给社会治安带来了极大的挑战。在这样的背景下&#xff0c;IP定位技术在公安部门的应用显得尤为重要。本文将对IP定…

geoserver+mapbox-gl 离线部署矢量切片地图服务学习笔记

geoserver安装 geoserver的安装包可以在官网下载Download - GeoServer&#xff0c;想要选择版本点击Archived找到指定版本进行下载http://geoserver.org/download/ &#xff08;如果网络不稳定&#xff0c;也可以直接使用下面的下载地址&#xff09; geoserver-2.15.0.rar资…

手把手带你申请【Sora】内测资格,附申请提示词

自从OpenAI发布了Sora之后&#xff0c;由于其流畅的画面&#xff0c;极高的真实度的60秒超长视频&#xff0c;瞬间秒杀当前市面上所有的视频胜场模型。 附上体验地址&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators 相信Sora发布之后也…

PRewrite: Prompt Rewriting with Reinforcement Learning

PRewrite: Prompt Rewriting with Reinforcement Learning 基本信息 2024-01谷歌团队提交到arXiv 博客贡献人 徐宁 作者 Weize Kong&#xff0c;Spurthi Amba Hombaiah&#xff0c;Mingyang Zhang 摘要 工程化的启发式编写对于LLM&#xff08;大型语言模型&#xff09;应…

uniapp 滑动页面至某个元素或顶部

直接上代码&#xff1a; uni.pageScrollTo({selector: #top, // 需要返回顶部的元素id或class名称duration: 300 // 过渡时间&#xff08;单位为ms&#xff09; }); 官方文档&#xff1a;

什么是云游戏?云游戏平台可以运行3A游戏吗?

对于不熟悉游戏行业的人来说&#xff0c;面对云游戏可能会有一个疑问——除了单机游戏&#xff0c;现在所有游戏不都是联网玩吗&#xff1f;云游戏和网络游戏有什么区别&#xff1f; 实际上&#xff0c;云游戏和传统网络游戏有着本质的不同。 传统网络游戏需要玩家先下载并在本…

工时管理软件:为什么企业需要工时跟踪?

工时跟踪对于企业经营来说&#xff0c;可能不是首要事项。工时跟踪有什么用&#xff1f; 管理学大师彼得德鲁克曾说过&#xff1a;If you can’t measure it, you can’t improve it&#xff08;如果无法衡量&#xff0c;就无法改进&#xff09;。企业经营也是同样道理&#x…

Linux运维_Bash脚本_编译安装CMake-3.28.3

Linux运维_Bash脚本_编译安装CMake-3.28.3 Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux …

Unity 报错:SSL CA certificate error

使用UnityWebRequest时出现如下报错&#xff1a; SSL CA certificate error Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_USER_ERROR1 原因&#xff1a; 证书验证失败 和 SSL CA证书错误 解决方法&#xff1a; 创建一个如下的类&#xff1a; /// <…

注解校验备忘

NotNull 可用于一切包装类型 NotEmpty 用于String类型&#xff0c;表示不为空&#xff0c;并且长度大于0 用于List集合&#xff0c;表示不为空&#xff0c;并且size大于0 NotBlank 只用于字符串&#xff0c;去除两端空格后&#xff0c;长度大于0 Min和Max 包含当前值&a…

上传图片流

/** * 使用httpclint 发送文件&#xff0c;如果不传输文件&#xff0c;直接设置fileParamsnull&#xff0c; * 如果不设置请求头参数&#xff0c;直接设置headerParamsnull&#xff0c;就可以进行普通参数的POST请求了 * * param url 请求路径 * param fileParams 文件参数 * p…

Android 中为什么主线程不会因为 Looper.loop() 里的死循环卡死?

在 Android 中&#xff0c;主线程&#xff08;通常被称为 UI 线程或事件分发线程&#xff09;通过 Looper.loop() 方法进入一个无限循环&#xff0c;这个循环负责处理各种事件&#xff0c;如按钮点击、触摸事件、绘制请求等。尽管这是一个死循环&#xff0c;但它并不会导致主线…

基于Python dlib的人脸识别的上课考勤管理系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

day49(vueJS)vue3的生命周期钩子 服务端渲染概念 vue3的组建通信 vue3的ref属性应用 vue3(vuex和pinia的使用)

vue3的生命周期钩子 服务端渲染概念 vue3的组建通信 vue3的ref属性应用 vue3&#xff08;vuex和pinia的使用&#xff09; vue3的生命周期钩子常规要点、总结代码演示 补充要点、总结 服务端渲染概念要点总结 vue3的组建通信要点总结父对子传值子对父传值跨层级组件传值 vue3的r…

2024年Android开发陷入饱和,想拿高工资

前言 从16年毕业至今&#xff0c;就职过两家公司&#xff0c;大大小小项目做了几个&#xff0c;非常感谢我的两位老大&#xff0c;在我的android成长路上给予我很多指导&#xff0c;亦师亦友的关系。 从年前至今参加面试了很多公司&#xff0c;也收到了几家巨头的offer&#…

2024Java大厂面试真题,java高级开发面试经验

概述 毫无疑问&#xff0c;Spring Cloud是目前微服务架构领域的翘楚&#xff0c;无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面&#xff0c;其底层的很多原理&#xff0c;很多人可能并不知晓。因此本文将通过大量的手绘图&#xff0c;…

一次线上JVM GC 长暂停排查,加班搞了好久

给大家分享一篇我在知乎上看到的&#xff0c;针对长时间 GC 问题排查定位过程的文章。 最终原因定位到 swap 空间上&#xff0c;是我未曾设想过的角度&#xff0c;因为常规的 GC 问题&#xff0c;相当大一部分原因最终定位出来都是代码相关、流量相关、配置相关的&#xff0c;…

C++高级面试题:什么是C++的模板元(Template Argument)?请提供一个示例。

什么是C的模板元&#xff08;Template Argument&#xff09;&#xff1f;请提供一个示例。 在 C 中&#xff0c;模板参数&#xff08;Template Argument&#xff09;是指在模板的实例化过程中&#xff0c;为模板提供的具体类型、值或模板的参数。模板参数可以是类型、非类型或模…

需求并行开发场景,如何高效发布

云布道师 微服务架构下&#xff0c;每个应用服务独立开发、独立发布&#xff0c;小步快跑&#xff0c;持续快速交付业务需求。多人协同开发同一个应用时&#xff0c;分支开发模式是一个适合的协同方案。该模式下一个需求或任务通常对应一个 feature 分支&#xff0c;多个需求一…

测试用例例子:在线购物平台的结算功能测试

用例标题&#xff1a;在线购物平台结算功能测试 测试目的&#xff1a; 验证在线购物平台的结算功能是否正常工作&#xff0c;确保用户能够顺利完成支付流程。 用例级别&#xff1a;高 测试环境&#xff1a; 操作系统&#xff1a;Windows 10浏览器&#xff1a;Chrome 最新版…