输入一行字符放入字符数组,统计其中的大写字母、小写字母、空格、数字以及其它字符的个数。(要求使用指针变量间接访问)
时间: 2023-05-31 11:18:11 浏览: 246
统计字符串中数字、字母和空格的个数
5星 · 资源好评率100%
### 回答1:
可以使用指针变量间接访问字符数组中的每个字符,然后统计其中的大写字母、小写字母、空格、数字以及其它字符的个数。具体实现可以参考以下代码:
```c
#include <stdio.h>
int main()
{
char str[100];
int i, upper = , lower = , space = , digit = , other = ;
char *p = str; // 定义指向字符数组的指针变量
printf("请输入一行字符:\n");
gets(str); // 从标准输入读入一行字符
// 遍历字符数组中的每个字符,统计各种类型的字符个数
while (*p != '\') {
if (*p >= 'A' && *p <= 'Z') {
upper++;
} else if (*p >= 'a' && *p <= 'z') {
lower++;
} else if (*p == ' ') {
space++;
} else if (*p >= '' && *p <= '9') {
digit++;
} else {
other++;
}
p++; // 指针变量指向下一个字符
}
// 输出各种类型的字符个数
printf("大写字母:%d\n", upper);
printf("小写字母:%d\n", lower);
printf("空格:%d\n", space);
printf("数字:%d\n", digit);
printf("其它字符:%d\n", other);
return ;
}
```
### 回答2:
此问题需要我们对于指针变量的使用和字符数组的操作有一定了解。
首先,我们可以通过scanf("%[^\n]",str)的方法输入一行字符,将其存储于字符数组str中。然后,我们可以定义5个变量来记录大写字母、小写字母、空格、数字以及其它字符的个数,分别初始化为0。接着,我们可以用指针变量遍历字符数组,判断每个字符的类型,并根据不同类型增加相应的计数器。最后,输出各类型字符的个数,即可完成本问题。
具体实现如下:
```c
#include <stdio.h>
int main()
{
char str[1000];
int i, cntUpper = 0, cntLower = 0, cntSpace = 0, cntDigit = 0, cntOther = 0;
char *p = str;
printf("请输入一行字符: ");
scanf("%[^\n]", str);
while(*p != '\0')
{
if (*p >= 'A' && *p <= 'Z')
cntUpper++;
else if (*p >= 'a' && *p <= 'z')
cntLower++;
else if (*p == ' ')
cntSpace++;
else if (*p >= '0' && *p <= '9')
cntDigit++;
else
cntOther++;
p++;
}
printf("大写字母个数:%d\n", cntUpper);
printf("小写字母个数:%d\n", cntLower);
printf("空格个数:%d\n", cntSpace);
printf("数字个数:%d\n", cntDigit);
printf("其它字符个数:%d\n", cntOther);
return 0;
}
```
在上述程序中,我们通过指针变量*p访问字符数组str中的每个字符。如果该字符属于某种类型,则根据其类型增加相应的计数器。最后,我们输出各类型字符的个数即可。
需要注意的是,我们在输入字符时使用了scanf("%[^\n]",str)的输入方式,这是为了防止输入空格后字符输入停止的情况。其中,%[^\n]表示匹配除换行符外的所有字符,即读取到换行符时停止。
### 回答3:
输入一行字符放入字符数组,统计其中的大写字母、小写字母、空格、数字以及其它字符的个数,可以通过使用指针变量间接访问来实现。
首先,定义一个字符数组,并使用`gets()`函数输入一行字符,例如:
```
char str[100];
gets(str);
```
接下来,定义五个变量,分别用于保存大写字母、小写字母、空格、数字以及其它字符的个数。例如:
```
int upper = 0, lower = 0, space = 0, digit = 0, other = 0;
```
然后,用一个指针变量`p`指向字符数组的第一个元素,并使用循环遍历整个字符数组。在循环内部,通过指针变量间接访问字符数组中的元素,并判断每个元素的类型,从而统计出各种类型字符的个数。例如:
```
char *p = str;
while (*p != '\0') {
if (*p >= 'A' && *p <= 'Z') {
upper++;
}
else if (*p >= 'a' && *p <= 'z') {
lower++;
}
else if (*p == ' ') {
space++;
}
else if (*p >= '0' && *p <= '9') {
digit++;
}
else {
other++;
}
p++;
}
```
最后,输出各种类型字符的个数:
```
printf("大写字母个数:%d\n", upper);
printf("小写字母个数:%d\n", lower);
printf("空格个数:%d\n", space);
printf("数字个数:%d\n", digit);
printf("其它字符个数:%d\n", other);
```
完整代码如下:
```
#include <stdio.h>
int main() {
char str[100];
gets(str);
int upper = 0, lower = 0, space = 0, digit = 0, other = 0;
char *p = str;
while (*p != '\0') {
if (*p >= 'A' && *p <= 'Z') {
upper++;
}
else if (*p >= 'a' && *p <= 'z') {
lower++;
}
else if (*p == ' ') {
space++;
}
else if (*p >= '0' && *p <= '9') {
digit++;
}
else {
other++;
}
p++;
}
printf("大写字母个数:%d\n", upper);
printf("小写字母个数:%d\n", lower);
printf("空格个数:%d\n", space);
printf("数字个数:%d\n", digit);
printf("其它字符个数:%d\n", other);
return 0;
}
```
阅读全文