郑州轻工业大学oj题解(c语言)-1023-1026 ASCII码系列(一)
1023-1026本质上都是有关ASCII码的问题,故此处放在一起讨论。
ASCII码,简称asc码,是C语言的重要部分,通常用于加密。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位[二进制数]来表示所有的大写和小写字母,数字0 到9、标点符号
例如在1023-1026这几题中就需要用到ASCLL码来完成字符的表示与转换。
首先我们看1023题。
1023: 大小写转换
输入一个字母,若是小写字母,则变为大写输出,否则,原样输出。
输入
输入为一个字符。
输出
按题目要求输出一个字符,单独占一行。
代码如下:
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch);//此处表示输入一个字符给ch
if(ch >= 'a' && ch <= 'z')//判断是否为小写字母
ch -= 32;//32为大写字符与小写字符之间的差值。
printf("%c\n", ch);
return 0;
}
从题目中我们可以看到,题意要求我们判断字符是否是小写字母,并完成小写转换为大写的操作。
所以,我们先通过if语句判断了输入的字符是否在小写字母的区间,如果不是,则将字符的ASCII码-32得到其相应的大写字母的ASCII码(相应的大写转小写也同理)。
这里要强调的是,在输入为字符时,任何加减乘除的操作都只在ASCII码里进行(即是其字符的ASCII码完成计算过程)
1024: 计算字母序号
题目描述
输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)。
输入
输入只有一个英文字母。
输出
输出一个整数,表示该字母在字母表的序号,输出单独占一行。
代码如下:
#include<stdio.h>
int main()
{
char ch;
int s;
scanf("%c",&ch);//此处表示输入一个字符给ch
if(ch >= 'a' && ch <= 'z'){
s=ch - 'a' + 1;
printf("%d",s);
}//判断是否为小写字母,并输出其序号
else if(ch >='A'&&ch<='Z'){
s=ch-'A'+1;
printf("%d",s);
}//判断是否为大写字母,并输出其序号
return 0;
}
这里为了方便大家理解,用了大家更好懂的写法。首先根据题意,输入的字母大小写是不确定的,所以需要我们先去判断大小写。然后判断完大小写后,把输入的字符减去这个字符的第一个字母,(大写减A,小写减a)然后加上1即可得到这个字符在其字母表里的序号。
由于篇幅问题1025.1026留到第二篇再做讲述。
PS:看例子不要只抄代码,要善于读懂代码,做到举一反三。