不要引用 <ctype.h>这个函数
时间: 2023-08-14 20:05:29 浏览: 80
好的,以下是不使用 `ctype.h` 函数的代码:
```c
#include <stdio.h>
void uppercase_first(char *str) {
// 将第一个字母改为大写
if (*str >= 'a' && *str <= 'z') {
*str -= 32;
}
// 循环遍历字符串
while (*str != '\0') {
// 如果当前字符是空格,则将下一个字符改为大写
if (*str == ' ' && *(str + 1) >= 'a' && *(str + 1) <= 'z') {
*(str + 1) -= 32;
}
str++;
}
}
void first_lowercase(char *str) {
// 将第一个字母改为小写
if (*str >= 'A' && *str <= 'Z') {
*str += 32;
}
// 循环遍历字符串
while (*str != '\0') {
// 如果当前字符是空格,则将下一个字符改为小写
if (*str == ' ' && *(str + 1) >= 'A' && *(str + 1) <= 'Z') {
*(str + 1) += 32;
}
str++;
}
}
int main() {
char str[] = "hello world!";
uppercase_first(str);
printf("%s\n", str);
first_lowercase(str);
printf("%s\n", str);
return 0;
}
```
这个程序中,我们没有使用 `ctype.h` 头文件中的函数,而是直接使用 ASCII 码将字母转换为大写或小写。具体地,我们使用 `'a'` 和 `'A'` 的 ASCII 码差值(即 `32`)来将小写字母转换为大写字母,使用 `'A'` 和 `'a'` 的 ASCII 码差值来将大写字母转换为小写字母。在 `uppercase_first` 和 `first_lowercase` 函数中,我们分别遍历字符串,并将第一个单词的第一个字母改为大写或小写。在 `main` 函数中,我们测试这两个函数,以验证它们的正确性。
阅读全文