输入一行英文句子(不超过100个字符),输出这个句子中的英文字母(Letter)、数字(Digit)和其它字符(Symbol)(空格标点符号等)的个数 c语言指针实现
时间: 2024-03-24 08:40:40 浏览: 23
下面是使用指针实现的代码:
```c
#include <stdio.h>
int main() {
char str[100];
char *p;
int letter_count = 0, digit_count = 0, symbol_count = 0;
printf("请输入一个英文句子:");
fgets(str, 100, stdin); // 从标准输入流中读取一行字符串
p = str;
while (*p != '\0') {
if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) { // 如果当前字符是英文字母
letter_count++;
} else if (*p >= '0' && *p <= '9') { // 如果当前字符是数字
digit_count++;
} else { // 其它字符
symbol_count++;
}
p++;
}
printf("英文字母个数为%d\n", letter_count);
printf("数字个数为%d\n", digit_count);
printf("其它字符个数为%d\n", symbol_count);
return 0;
}
```
解释一下代码的实现:
1. 使用`fgets`函数从标准输入流中读取一行字符串,存储在`str`数组中;
2. 定义指向字符串的指针`p`,初始指向字符串的第一个字符;
3. 使用循环遍历每个字符,如果当前字符是英文字母,则英文字母计数器加1;如果当前字符是数字,则数字计数器加1;否则其它字符计数器加1;
4. 指针`p`后移,指向下一个字符;
5. 输出英文字母个数、数字个数和其它字符个数。
注意:代码中使用了`fgets`函数读取输入,而不是`scanf`函数,是因为`scanf`函数在读取字符串时会停止在空格处,无法读取一整行字符串。