c语言大小写字母转换的三种方法 到 思考指针(超详细)

这篇具有很好参考价值的文章主要介绍了c语言大小写字母转换的三种方法 到 思考指针(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

总结摆在前面

1.指针思考的拓展

2.浅提一下表达式求值 

三种方法

1.利用ASCII相差32

1.1以表达式求值的思考方式

1.2以指针的方式

2.通过按位异或来求(我觉得太巧合了,不推荐)

3.通过库函数(这个看你积累)

3.1  tolower函数——转换字符位小写

定义

参数

返回值 

3.2  toupper——转换字符为大写

定义

参数

返回值 

3.3上代码


前言

经过网上资料的参考和自己的总结,c语言大小写字母转换至少有三种方法。对于我们c语言初学者来说,其实可以通过该问题的思考,从ASCII表到表达式求值再指针,初步感受他们的魅力所在。

总结摆在前面

1.指针思考的拓展

指针广义上来说,可以不仅仅是十六进制的地址,ASCII中的值又何尝不是一种地址,告诉你ASCII的值就相当于告诉了他的指针,通过指针我们可以找到其对应的字符。对ASCII值(指针)进行加减运算,可以得到另一个指针,对应另一个字符。如

dec ch
65 A
97 a

A的ASCII值为65,也可以理解为A的地址(指针)是65(0x41),指针加32,变为97,指针最后就指向了字符a。

2.浅提一下表达式求值 

 对于表达式求值,笔者在从二进制和内存的底层来探究同一数据在不同类型下的调用(链接)中分享了我对表达式求值的思考。这里我再分享一些新的看法

不管是定义一个变量,数组,抑或是函数,首先都有一个地址,地址一定会返回一个值(真数字),然后再根据你的数据类型,转换成或int,或char等的数据。

char ch = 'A' + 32;

我们要将’A'+32看成表达式求值,为97,char类型的97就是a了。

三种方法

1.利用ASCII相差32

1.1以表达式求值的思考方式

#include<stdio.h>
int main()
{
    char ch;
    printf("请输入:>>");
    scanf("%c", &ch);
    if (ch >= 'a' && ch <= 'z')
    {
        ch -= 32;
        printf("%c\n", ch);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
        ch += 32;
        printf("%c\n", ch);
    }
    else
    {
        printf("输入的不是大写或者小写字母\n");
    }
    return 0;
}
 
 

1.2以指针的方式

#include<stdio.h>
 
int main()
{
    char a;
    printf("请输入:>>");
    scanf("%c", &a);
 
    if (a <= 91)        
    {
        a += 32;   
        printf("%c\n", a);
 
    }
    else
    {
        a -= 32;   
        printf("%c\n", a);
    }
return 0;
}

是不是感觉跟第一个好像没什么两样,只是一个是97,一个是’a'而已,97相当于指针,把‘a'当成表达式,求值就是97.

2.通过按位异或来求(我觉得太巧合了,不推荐)

0 ^ n = n

-1 ^ n = ~n

n ^ n = 0

满足交换律和结合律,不满足分配律 存在逆运算:

a = b ^ c <<====>>b = a ^ c  &&  c = a ^ b

ch dec BIN
A 65 0100 0001
a 97 0110 0001

举个例子,其他字母也是一个道理,A,a的二进制后4位都一样,只是前四位不一样,我们就希望A的能变a,a能变A,由于抑或具有逆运算,只需要找到他们的过度系数就行了。然后,经过尝试,也可以说是凑,真有这么个数字32(0010 0000),可以,所以,就可以了。不是说能求出来太巧合了,其他问题能这么干么?

#include<stdio.h>
 
int main()
{
    char a;
    printf("请输入一个字母:");
    scanf("%c", &a);
    if ((a >= 'A') && (a <= 'Z') || (a >= 'a') && (a <= 'z'))
   {
            arr[i] ^= 32;
   }
printf("%c",a);
return 0;
}

   

3.通过库函数(这个看你积累)

首先要包含c标准库<ctype.h>.

3.1  tolower函数——转换字符位小写

定义

int tolower( int ch );

参数

ch - 要转换的字符。若 ch 的值不能表示为 unsigned char 且不等于 EOF ,则行为未定义

返回值 

ch 的小写版本,或若无列于当前 C 本地环境的小写版本,则为不修改的 ch 。

3.2  toupper——转换字符为大写

定义

int toupper( int ch );

参数

ch - 要转化的字符。若 ch 的值不能表示为 unsigned char 且不等于 EOF ,则行为未定义。

返回值 

被转换的字符,或若当前 C 本地环境不定义大写版本则为 ch 。

3.3上代码

#include<stdio.h>
#include<ctype.h>
int main()
{
    char ch;
    printf("请输入一个字符:\n");
    scanf("%c", &ch);
    if (ch >= 'a' && ch <= 'z')
    {
        ch = toupper(ch);
        printf("%c\n", ch);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
         ch = tolower(ch);
        printf("%c\n", ch);
    }
    else
    {
        printf("输入的不是大写或者小写字母\n");
    }
    return 0;
}

最后,代码都是直接就能运行的,感兴趣的小伙伴可以直接拿去运行。然后再多多感谢各位大佬们的支持与指正,我也会不负众望,多多学习,持续更新优质文章。谢谢大家文章来源地址https://www.toymoban.com/news/detail-826214.html

到了这里,关于c语言大小写字母转换的三种方法 到 思考指针(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++——转换字母的大小写

    首先我们要知道,C++字符的所有转换形式都是依照ASCII码来的。 转换规则:大写字母=小写字母-32 程序实例 程序代码 运行结果   如果要将大写字母转换为小写字母,则小写字母=大写字母+32  

    2024年02月07日
    浏览(47)
  • java中字母、字符串,输入小写输出大写,输入大写输出小写、大小写转换

    思路: 1、利用“大小写字母之间正好相差32”这一特点                                                       2、用  toLowerCase()、toUpperCase() 字符串自带的方法  提示: Java中没有.nextChar()。 所以要读取char,我们使用  .next().charAt(0)  1、 输入小写输

    2024年02月07日
    浏览(47)
  • 【Excel】WPS单元格快速转换表格字母大小写

    使用WPS Office打开表格,选择需要处理的单元格或单元格区域。 依次点击「会员专享」选项卡 —「智能工具箱」。 再点击「格式」—「大小写」,选择一种大小写转换方式即可。

    2024年02月08日
    浏览(36)
  • 使用python判断字母大小写的几种方法

    使用Python中的内置函数 isupper() 和 islower() 来判断一个字母是否为大写或小写字母。 用户输入一个字母,程序使用isupper()和islower()函数判断字母是否为大写或小写,并输出相应的信息。如果用户输入了除字母以外的字符,程序会输出一个错误信息。 使用ASCII码值来判断字母大

    2024年02月04日
    浏览(40)
  • C语言学习之统计英文字符串中26个字母大小写出现的次数

    实例要求: 编写C语言代码,统计出英文字符串中26个字母大写和小写 出现的次数 ; 输入输出如下所示: 实例分析: 1.对字符串用 while循环或者for循环 进行遍历,找到 26个英文字母大小写 ; 2.将所有英文字母大写或者小写都转换成 ASCII值 ,进行运算; 3.封装相应的功能函数

    2024年02月10日
    浏览(32)
  • 【蓝桥杯备赛Java组】语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月21日
    浏览(50)
  • 【蓝桥杯备赛Java组】第一章·语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月19日
    浏览(46)
  • Qt之QByteArray大小写字母转化

    QByteArray类对象若为带大小写字母的字符串,可调用函数toUpper()和toLower()实现字母大小写 的转换。函数toUpper()的原型声明如下: QByteArray toUpper(); 函数很简单,没有参数,直接返回转换成大写字母后的字节数组。在转换过程中,碰到已经是大写的字母就忽略,用法举例如下:

    2024年01月16日
    浏览(40)
  • 26个字母大小写的ASCII码值

    \\\'0\\\'=48; 小写: a → 97,b → 98,c → 99,d → 100,e → 101,f → 102, g → 103,h → 104,i → 105,j → 106,k → 107,l → 108, m → 109,n → 110,o → 111,p→ 112,q → 113,r → 114, s → 115,t → 116,u → 117,v → 118,w → 119,x → 120,y → 121,z → 122 大写: A → 65,B → 66,C

    2024年02月11日
    浏览(35)
  • JSON.toJSONString首字母大小写问题

    开发过程中遇到的,对象转字符串时,有个字段首字母是大写的,转换之后就变成了小写,在这里记录下 不管是自带JSON,还是阿里的fastJson,都会将属性的字段首字母改为小写 通过注解 @JSONField 可以解决该问题,如下; 优点:少量的话简单方便 缺点:入侵性强,懒得每个加

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包