P5704 【深基2.例6】字母转换

下面一道题目是【入门1】顺序结构里面的【深基2.例6】字母转换(没错,我刚刚知道能直接把这个带连接的名字CTRL+C搞过来),接下来上咱们的 P5704 【深基2.例6】字母转换,题目如下👇

题目描述

char型变量的讲解

没错,这道题开始出现了除int外的其他变量名字——char,char型变量就是我们常说的字符型变量,他输入进去的时候是以字符的形式输入的,比如我们以前int输入"9",那么计算机内部存入的就是9;而对于char来说,第一种输入方式是scanf("%d",&a),那么他输入的时候就和int没有什么两样,唯一的不同就是char型变量在计算机内部只占用1个字节,但int需要占据整整4个字节,这是后话,在这里就不过多的赘述了;不过值得注意的是char型变量的数据范围要比int型小很多,它只有-128 - 127

#include <stdio.h>
int main()
{
    char a;
    int b;
    scanf("%d",&a);
    scanf("%d",&b);
    printf("%d\n",a);
    printf("%d",b);
    return 0;
}

而第二种输入方式是scanf("%c",&a),这样当我们在键盘上输入"9"的时候,计算机存入的则是9所对应的ASCII码值,也就是57。如果我们想要让程序输出9这个字符,那么在输出的时候用的应该是printf("%c",a),但是如果我们想要了解我们输入的那个字符对应的ASCII码值,那就要使用printf("%d",a)了。

#include <stdio.h>
int main()
{
    char a;
    int b;
    scanf("%c",&a);
    scanf("%d",&b);
    printf("%c\n",a);
    printf("%d\n",a);
    printf("%d",b);
    return 0;
}

那么大家肯定很好奇这个ASCII码值是怎样来的呢,它的存在原因就在于计算机内部只能存入数字而不能存入字符,那么当我们想要给计算机输入一个字符的时候,计算机是无法识别和储存的,所以我们将键盘上的每个字符都设置了对应的ASCII码值,以便计算机的储存,就像我们刚刚给计算机内部输入了一个字符型的"9",那么计算机内部所存储的不是9而是它对应的ASCII码值——"57"。

在数字上大家可能体会不深,但是如果我们要给char型变量a赋一个'*'这个符号呢?

#include <stdio.h>
int main()
{
    char a='*';
    printf("%c\n",a);
    printf("%d\n",a);
    return 0;
}

大家可以看到,我们给char型变量a赋值赋成'*',这时候计算机内部a所对应的数字是"*"所对应的ASCII码值42而非"*"本身,这就是ASCII码值存在的必要

细心的朋友发现了,我在给变量a做复制的时候不是直接写char a=*,而是在*外面加上了单引号"''",这就是为了让计算机明白这是一个字符,让它把"*"转化成对应的ASCII码值,而不是直接一个*,让计算机不知所云,那样的话编译器会报错的。

just like this!!!

了解了这些以后这道题就轻而易举了,他要让我们编写一个程序,实现把小写字母转化成对应的大写字母,由于ASCII码值表的编写是有规律的,所以每个小写字母的ASCII码和对应的大写字母的ASCII码差值是一样的,故此我们可以试验一下确定小写字母的对应大写字母之间ASCII码值的差值。

#include <stdio.h>
int main()
{
    char a='a';
    char b='A';
    printf("%d\n",a);
    printf("%d\n",b);
    return 0;
}

这里注意:我们要的是ASCII码值的差值,所以在输出的时候一定要输出它对应的值而不是字符,要使用%d而非%c!!!

所以我们得到每个大写字母是对应的小写字母减去(97-65=)32得到的,所以我们只需要在输出的时候让小写字母减去32再以字符型输出就得到了我们想要的结果啦~

话不多说上代码:

C代码

#include <stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
b=a-32;
printf("%c",b);
return 0;
}

那么这道水题就搞定了,希望我的讲解对大家能有帮助~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值