当前位置:首页 » 《休闲阅读》 » 正文

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

15 人参与  2024年10月10日 14:40  分类 : 《休闲阅读》  评论

点击全文阅读


       

目录

方法一:库函数直接转换

1、toupper的测试代码

2、tolower的测试代码 

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

1、自己实现大写转小写

 2、自己实现小写转大写

结语 


前言:

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

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

方法一:库函数直接转换

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

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://m.zhangshiyu.com/post/170057.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1