《C语言入门100例》(第8例) 字符大小写

一. 概念引入

  在C语言中,对于每一个字符有其对应的ASCLL值,但为什么要有这个表呢?
  信息在计算机内是使用二进制的形式表示,我们深入到计算机的最底层,其信息的表示方式只有0和1,这种表示方法人是很难理解的,如果我们屏幕上看到的只有0和1,有几人能看明白呢?如果计算机只能识别0和1,那我们所能理解的信息又如何才能让计算机明白呢?
  所以,为了方便人与计算机之间能够进行信息的交换,人们编制了一个统一的信息交换码——ASCLL码表,全称是“美国信息交换标准码。
在这里插入图片描述

二. 字母大小转换

  通过上面的ASCLL我们可以得知,A ~ Z对应的十进制值为65 ~ 90,而a ~ z对应的值为97 ~ 122,而每个大写字母与其对应的小写字母的值相差32,所以我们可以通过加减32,进行大小写的转化。

int main(){
    
    
	char ch;
	while (~scanf("%c", &ch)){
    
    
		getchar();
		ch += 32;
		putchar(ch);
		putchar('\n');
	}
}

三. 课后习题

3.1 转换成小写字母

709. 转换成小写字母

在这里插入图片描述
我们只需将所有大写字母转化即可。
代码如下:



char * toLowerCase(char * s){
    
    
    for(int i = 0; i < strlen(s); i++){
    
    
        if(s[i] >= 'A' && s[i] <= 'Z'){
    
    
            s[i] += 32;
        }
    }
    return s;
}

在这里插入图片描述

3.2 检测大写字母

520. 检测大写字母
在这里插入图片描述
分析:
不符合规则的单词有:

  1. 首字母为大写,后面的字母也有一部分大写。
  2. 首字母为小写,后面出现有大写字母。

注意如果是单个字符,不管大小写都符合规则,并且如果全为大写或全为小写,也符合规则。
代码如下:

bool detectCapitalUse(char * word){
    
    
    int len = strlen(word);
    if(len == 1){
    
    
        return true;
    }
    int n = 0;
    for(int i = 0; i < len; i++){
    
    
        if(word[i] >= 'A' && word[i] <= 'Z'){
    
    
            n++;
        }
    }
    if(word[0] >= 'A' && word[0] <= 'Z' && n > 1 && n < len){
    
    
        return false;
    }
    else if(word[0] >= 'a' && word[0] <= 'z' && n > 0){
    
    
        return false;
    }
    return true;

}

在这里插入图片描述

四. 总结

字符的大小写转化,我们只需牢记其ASCLL值得范围,以及大小写之间的值差为32.

Guess you like

Origin blog.csdn.net/qq_53060585/article/details/121222542