本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。
函数接口定义:
void StringCount( char *s );
其中 char *s 是用户传入的字符串。函数StringCount须在一行内按照
大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数
的格式输出。
裁判测试程序样例:
#include <stdio.h>
#define MAXS 15
void StringCount( char *s );
void ReadString( char *s ); /* 由裁判实现,略去不表 */
int main()
{
char s[MAXS];
ReadString(s);
StringCount(s);
return 0;
}
/* Your function will be put here */
输入样例:
aZ&*?
093 Az
输出样例:
2 2 1 3 4
我的代码
void StringCount( char *s ){
int i = 0; int a=0, b=0, c=0, d=0, cnt=0;
while (s[i] != '\0'){
if(s[i] >= 'A' && s[i] <= 'Z') a++; //大写字母累计
if(s[i] >= 'a' && s[i] <= 'z') b++; //小写字母累计
if(s[i] == ' ') c++; //空格统计
if(s[i] >= '0' && s[i] <= '9') d++; //数字统计
i++; //i是下标
}
printf("%d %d %d %d %d", a, b, c, d, i-a-b-c-d);
}
还是比较习惯用数组,循环的情况比较清晰,看了别人用指针是这样子的,重新定义指针,遍历s字符串
char *p;//再定义了一个指针,指向s首地址,然后累加,利用*p访问字符
for ( p=s; *p; p++ ) {
if ( *p >= 'A' && *p <= 'Z' )
a++;
对指针的应用还需熟练呐 。