优化这段代码,注意 其他字符(每个中文字符算1个):#include <stdio.h> #include <ctype.h> #include <string.h> #define MAX_LEN 1000 int main() { int english = 0, digit = 0, space = 0, other = 0; char str[MAX_LEN]; fgets(str, MAX_LEN, stdin); int len = strlen(str); for (int i = 0; i < len; i++) { char c = str[i]; if (isalpha(c)) { english++; } else if (isdigit(c)) { digit++; } else if (isspace(c)) { space++; } else { other++; } } printf("%d %d %d %d", english, digit, space, other); return 0; }
时间: 2024-01-15 15:03:33 浏览: 435
可以通过以下方式来优化该代码:
1. 使用 getchar() 代替 fgets() 函数,这样可以避免不必要的内存分配和拷贝操作。
2. 不需要使用 strlen() 函数来获取字符串的长度,可以在读入字符串时同时统计字符串长度。
3. 可以将字符类型的变量 c 改为整型变量,这样可以提高运行效率。
4. 在判断字符类型时,可以使用 switch 语句代替多个 if-else 语句,这样可以提高代码可读性和运行效率。
优化后的代码如下:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 1000
int main() {
int english = 0, digit = 0, space = 0, other = 0;
int c, len = 0;
while ((c = getchar()) != EOF && len < MAX_LEN - 1) {
if (isalpha(c)) {
english++;
} else if (isdigit(c)) {
digit++;
} else if (isspace(c)) {
space++;
} else {
other++;
}
len++;
}
printf("%d %d %d %d", english, digit, space, other);
return 0;
}
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)