C语言中字母大小写转化简单示例

 更新时间:2022年11月23日 11:44:19   作者:jebe_lwb  
在C语言中,有时候我们遇到这样的考题,将c语言大写字母转化为小写字母,下面这篇文章主要给大家介绍了关于C语言中字母大小写转化的相关资料,文中介绍的非常详细,需要的朋友可以参考下

C语言入门的时候都会遇到要求写大小写转换的题目

这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,

A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,

即大小写字母之间ASCII码差值为32,想要将大写字母转换为小写字母可以将该字符ASCII码值+32,同理小写字母转换成大写字母只需将该字符ASCII码值-32。

咱们先来看看这个代码:

 咋一看,欸?很不错,没啥毛病,编译运行试一下,发现还不错

 确实可以,但是.....这样呢?

 啊这.........这是怎么回事呢?

原来,

 我们之前的这个else,它的执行条件是之前if里的范围的补集,也就是说只要是在(x<='a'||x>='z')的范围内,它都会执行“x=x+32”,所以出现上述输入字符,也能输出的情况。

这个时候,只要具体化else的执行条件,将其变成else if,即可。

如下:

 这样就可以啦!

附一个C语言字母大小写互换的简单方法

字母的大小写互换其实很简单

回到最基本的数据的存储形式,从八位二进制角度去看大写字母和小写字母,你会发现它们的低四位是相同的,高四位有细微差别。

举例:

ASCIIDECBIN
‘A’6501000001
‘a’9701100001
‘B’6601000010
‘b’9801100010
‘X’8801011000
‘x’12001111000

仔细观察 发现是第六位不同!

大小写互换的方法

  • 考虑到低四位完全相同 只用互换高四位的第六位就可以实现大小写互换
  • 互换高四位的某一位而不改变低四位,我们联想到位运算中的按位异或^ 关于按位异或 详见按位异或
  • 由按位异或的知识,我们可以寻找一个数,使得任意的一个八位二进制数与它进行异或操作后,高四位的第六位01取反,低四位不变
  • 回顾我们的目标 假如把'A'变为'a' 我们需要把01000001变为01100001,也就是把第六位的0变为1 。
  • 我们找到这个数了!它的二进制是00100000 十进制是32
  • 01000001^00100000=01100001,是不是很神奇?同理把小写字母'a'变为'A'也只需要把它与32进行按位异或操作就可以啦~
#include<stdio.h>
int main(){
    int i;
    char s[100];
    //读入字符串
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
        if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
        s[i]^=32;//核心语句,实现字符串中字母的大小写互换
    }
    printf("%s",s);
    return 0;
}

样例输入->

Hello,Java!

样例输出->

hELLO,jAVA!

总结

到此这篇关于C语言中字母大小写转化的文章就介绍到这了,更多相关C语言字母大小写转化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++可变参数函数的实现方法示例

    C++可变参数函数的实现方法示例

    这篇文章主要给大家介绍了关于C++可变参数函数的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C语言线性表顺序存储结构实例详解

    C语言线性表顺序存储结构实例详解

    这篇文章主要介绍了C语言线性表顺序存储结构实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++取得当前时间的方法

    C++取得当前时间的方法

    这篇文章主要介绍了C++取得当前时间的方法,实例展示了通过系统函数获取当前时间的实现方法,非常简单易懂,需要的朋友可以参考下
    2014-10-10
  • c++ 指针与引用的区别介绍及使用说明

    c++ 指针与引用的区别介绍及使用说明

    指针与引用看上去完全不同(指针用操作符*和->,引用使用操作符.),但是它们似乎有相同的功能,感兴趣的朋友可以了解下啊,或许本文对你有所帮助,好了,话不多说,切入正题
    2013-01-01
  • C语言数据类型和格式说明符基础教程示例

    C语言数据类型和格式说明符基础教程示例

    这篇文章主要为大家介绍了C语言数据类型和格式说明符基础教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 如何用C++实现A*寻路算法

    如何用C++实现A*寻路算法

    寻路是游戏比较重要的一个组成部分。因为不仅AI还有很多地方(例如RTS游戏里操控人物点到地图某个点,然后人物自动寻路走过去)都需要用到自动寻路的功能。本文将介绍一个经常被使用且效率理想的寻路方法-A*寻路算法,并且提供额外的优化思路
    2021-06-06
  • C语言中如何判断质数

    C语言中如何判断质数

    这篇文章主要介绍了C语言中的判断质数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • C语言内存函数 memcpy,memmove ,memcmp

    C语言内存函数 memcpy,memmove ,memcmp

    这篇文章主要介绍了C语言内存函数 memcpy,memmove ,memcmp,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • MFC实现简单计算器

    MFC实现简单计算器

    这篇文章主要为大家详细介绍了MFC实现简单的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Qt模仿实现文字浮动字母的效果

    Qt模仿实现文字浮动字母的效果

    这篇文章主要介绍了通过Qt实现的文字浮动的效果,效果很简单就是文本向上移动,在移动过程中文字整体变大或缩小。感兴趣的可以试一试
    2022-01-01

最新评论