8-2-6 分类统计各类字符个数 (15分)

本文介绍了一个使用C语言编写的函数,该函数能够分析输入的字符串并统计其中的大写字母、小写字母、空格、数字和其他字符的数量。通过遍历字符串并对每个字符进行条件判断,实现了对不同类型字符的计数。

void StringCount( char s ){
int M,da=0,xiao=0,kong=0,shu=0,qi=0;
M=strlen(s);
for(int i=0;i<M;i++){
if(
(s+i)>=‘A’&&(s+i)<=‘Z’){
da++;
}
else if(
(s+i)>=‘a’&&(s+i)<=‘z’){
xiao++;
}
else if(
(s+i)>=‘0’&&(s+i)<=‘9’){
shu++;
}
else if(
(s+i)==’ '){
kong ++;
}
else qi++;
}
printf("%d %d %d %d %d",da,xiao,kong,shu,qi);
}

分类统计各类字符个数,通常是统计字符串中的大写字母、小写字母、空格、数字以及其他字符的数量。以下为几种不同实现方式: ### 方式一:使用指针遍历字符串 ```c #include <stdio.h> #define MAXS 15 void StringCount( char *s ); int main() { char s[MAXS]; // 假设这里手动输入字符串 scanf("%s", s); StringCount(s); return 0; } void StringCount( char *s ) { int upper = 0, lower = 0, blank = 0, number = 0, other = 0; while (*s != '\0') { if (*s >= 'A' && *s <= 'Z') { upper += 1; } else if (*s >= 'a' && *s <= 'z') { lower += 1; } else if (*s >= '0' && *s <= '9') { number += 1; } else if (*s == ' ') { blank += 1; } else { other += 1; } s += 1; } printf("%d %d %d %d %d", upper, lower, blank, number, other); } ``` 此方法借助指针遍历字符串,每遍历一个字符,就依据字符范围进行分类统计,最终输出各类字符的数量[^1]。 ### 方式二:使用数组下标遍历字符串 ```c #include <stdio.h> #include <string.h> #define MAXS 15 void StringCount(char *s); int main() { char s[MAXS]; // 假设这里手动输入字符串 scanf("%s", s); StringCount(s); return 0; } void StringCount(char *s) { int Letter = 0, letter = 0, blank = 0, digit = 0, other = 0; int len = strlen(s); for (int i = 0; i < len; i++) { if (s[i] >= 'A' && s[i] <= 'Z') { Letter++; } else if (s[i] >= 'a' && s[i] <= 'z') { letter++; } else if (s[i] >= '0' && s[i] <= '9') { digit++; } else if (s[i] == ' ') { blank++; } else { other++; } } printf("%d %d %d %d %d\n", Letter, letter, blank, digit, other); } ``` 这种方法利用数组下标遍历字符串,同样根据字符范围进行分类统计,最后输出结果[^2]。 ### 方式三:另一种数组下标遍历方式 ```c #include <stdio.h> #define MAXS 15 void StringCount( char *s ); int main() { char s[MAXS]; // 假设这里手动输入字符串 scanf("%s", s); StringCount(s); return 0; } void StringCount( char *s ) { int Letter = 0, letter = 0, blank = 0, digit = 0, other = 0; for (int i = 0; s[i] != '\0'; i++) { if (s[i] >= 'A' && s[i] <= 'Z') { Letter++; } else if (s[i] >= 'a' && s[i] <= 'z') { letter++; } else if (s[i] == ' ') { blank++; } else if (s[i] >= '0' && s[i] <= '9') { digit++; } else { other++; } } printf("%d %d %d %d %d", Letter, letter, blank, digit, other); } ``` 该方法也是使用数组下标遍历字符串,以 `'\0'` 作为字符串结束标志,对字符进行分类统计并输出结果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值