优化void fun(char *s, int *a, int *b) { *a = 0;大写字母个数初始化为0 *b = 0;小写字母个数初始化为0 while (*s != '\0') { // 遍历字符串 if (*s >= 'A' && *s <= 'Z') { (*a)++;大写字母个数加1 } else if (*s >= 'a' && *s <= 'z') { (*b)++;小写字母个数加1 } S++;指针后移 } }
时间: 2023-06-26 22:04:25 浏览: 53
这段代码的功能是统计字符串中大写字母和小写字母的个数,并将结果分别保存在传入的指针变量*a和*b中。
关于优化,这段代码已经比较简洁高效了,不过有几点可以注意一下:
1. 函数名不太规范,可以改成更有意义的名字,比如count_upper_lower。
2. 函数参数可以使用const关键字,表示不会修改输入的字符串。
3. 对于判断字符是否为大写字母和小写字母的if语句,可以使用ctype.h头文件中的函数isupper和islower来替代,使代码更加清晰简洁。
下面是优化后的代码:
```c
#include <ctype.h>
void count_upper_lower(const char *s, int *upper, int *lower) {
*upper = 0; // 大写字母个数初始化为0
*lower = 0; // 小写字母个数初始化为0
while (*s != '\0') { // 遍历字符串
if (isupper(*s)) { // 判断是否为大写字母
(*upper)++; // 大写字母个数加1
} else if (islower(*s)) { // 判断是否为小写字母
(*lower)++; // 小写字母个数加1
}
s++; // 指针后移
}
}
```
注意到我们去掉了if语句中对字符范围的判断,改成了使用isupper和islower函数,代码更加简洁易懂。另外,我们使用了const关键字来表示输入字符串不会被修改,这样可以避免一些不必要的错误。