利用指针分别统计一串字符中的大、小写字母的个数
时间: 2023-05-31 08:18:30 浏览: 190
### 回答1:
可以定义两个变量来分别记录大写字母和小写字母的个数,然后用指针遍历字符串,判断每个字符是否为大写或小写字母,如果是,则对应的计数器加1。具体实现可以参考以下代码:
```c
#include <stdio.h>
int main() {
char str[] = "Hello, World!";
int upper_count = , lower_count = ;
char *p = str;
while (*p != '\') {
if (*p >= 'A' && *p <= 'Z') {
upper_count++;
} else if (*p >= 'a' && *p <= 'z') {
lower_count++;
}
p++;
}
printf("大写字母个数:%d\n", upper_count);
printf("小写字母个数:%d\n", lower_count);
return ;
}
```
输出结果为:
```
大写字母个数:2
小写字母个数:10
```
### 回答2:
统计一串字符中大、小写字母的个数可以使用指针来完成。假设我们有一串字符数组char str[],可以定义两个指向字符类型的指针p1和p2,分别指向str[0]和str[n-1]。
首先,定义两个变量count1和count2,用于统计大写字母和小写字母的个数,初始值为0。
然后,利用while循环遍历整个字符串数组,判断当前指针指向的字符是否为字母。如果是字母,则判断该字母是大写字母还是小写字母,并分别增加统计变量的值。遍历完整个字符串数组后,即可得到大写字母和小写字母的个数。
下面是示例代码:
```C++
#include <iostream>
using namespace std;
int main()
{
char str[] = "AbcDefGhIjkLmNopQrstUvWxyZ";
int count1 = 0, count2 = 0;
char *p1 = str;
char *p2 = str + strlen(str) - 1;
while (p1 <= p2)
{
if (isalpha(*p1))
{
if (isupper(*p1)) count1++;
else count2++;
}
if (isalpha(*p2))
{
if (isupper(*p2)) count1++;
else count2++;
}
p1++;
p2--;
}
cout << "大写字母个数为:" << count1 << endl;
cout << "小写字母个数为:" << count2 << endl;
return 0;
}
```
以上代码中,利用isalpha()函数判断当前字符是否为字母;利用isupper()函数判断当前字符是否为大写字母。通过不断移动指针p1和p2来遍历整个字符串数组,最终得到大写字母和小写字母的个数。输出结果如下:
```
大写字母个数为:11
小写字母个数为:15
```
### 回答3:
指针在C语言中经常被用来操作复杂的数据结构,同时也能够用来统计字符型数据中各种字符的出现次数,实现起来十分简单。
我们可以遍历一整个字符串,然后用一个指针存储这个字符串中的每个字符。经典的字符串以null字符结尾,这个null所对应的字符ASCII码为0,所以我们可以通过判断字符是否为0来判断字符串是否已经结束。
在遍历的时候,我们可以通过比较字符的ASCII码来判断它是大写字母、小写字母、数字还是其他类型的字符。其中,大写字母的ASCII码范围在65~90之间,小写字母的ASCII码范围在97~122之间。
对于要统计的字符类型,我们要在开始之前都初始化为0,然后遍历字符串时,如果发现这个字符是对应的类型,就将对应类型的计数器加一。最后遍历结束后,我们就可以输出各种类型字符的数量。
以下是一个简单的代码示例:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int upperCount = 0, lowerCount = 0;
printf("请输入字符串:");
gets(str);
char* p = str;
while (*p != '\0') {
if (*p >= 'A' && *p <= 'Z') {
upperCount++;
} else if (*p >= 'a' && *p <= 'z') {
lowerCount++;
}
p++;
}
printf("大写字母数量:%d\n", upperCount);
printf("小写字母数量:%d\n", lowerCount);
return 0;
}
```
以上代码中,我们定义了一个字符数组来存储用户输入的字符串,然后定义了两个变量分别用来存储大写字母和小写字母的数量。在输入完用户字符串后,我们将一个指针`p`指向这个字符串的首位。
进入while循环后,我们判断当前指针所对应的字符是否是大写字母或小写字母,如果是,就将相应的计数器加一。循环结构类似于`for`循环,只不过是把表达式判断部分放在了循环内部。
最后,我们输出统计结果即可。这里虽然只统计了大写字母和小写字母的数量,但其他字符的统计也可以参照这个方法进行。