1.输入一串英文字母,统计出其中的大小写?
#include <stdio.h>
#incldue <string.h>
int main() {
char str[100]; // 假设输入的字符串不超过99个字符
int uppercase = 0, lowercase = 0; //统计大小写的个数
int i = 0;
printf("请输入一串英文字母: ");
fgets(str, sizeof(str), stdin); // 读取一行输入,包括空格但不包括换行符
// 去除可能的换行符
str[strcspn(str, "\n")] = 0;
// 遍历字符串中的每个字符
while (str[i] != '\0') { // 直到遇到字符串结束符
if (str[i] >= 'A' && str[i] <= 'Z') { // 如果是大写字母
uppercase++;
} else if (str[i] >= 'a' && str[i] <= 'z') { // 如果是小写字母
lowercase++;
}
i++;
}
printf("大写字母数量: %d\n", uppercase);
printf("小写字母数量: %d\n", lowercase);
return 0;
}
2.用到的函数有:
char *fgets(char *str, int n, FILE *stream);
作用:
- 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
参数:
- str -- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
- n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
返回值:
- 如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。
- 如果发生错误,返回一个空指针。
size_t strcspn(const char *str1, const char *str2)
作用:
- 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
参数:
- str1 -- 要被检索的 C 字符串。
- str2 -- 该字符串包含了要在 str1 中进行匹配的字符列表。
返回值:
- 该函数返回 str1 开头连续都不含字符串 str2 中字符的字符数。
3.ASCII编码
大写字母的范围是 A
到 Z
(65到90),小写字母的范围是 a
到 z
(97到122)。