习题6-1 分类统计字符个数 (15 分)
本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。
函数接口定义:
void StringCount( char s[] );
其中 char s[]
是用户传入的字符串。函数StringCount
须在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。
裁判测试程序样例:
#include <stdio.h>
#define MAXS 15void 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 &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1
void StringCount( char s[] ){
int i;
int letter=0,digit=0,blank=0,other=0;
for(i=0;i<strlen(s);i++){
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'){
letter++;
}else if(s[i]>='0'&&s[i]<='9'){
digit++;
}else if(s[i]==' '||s[i]=='\n'){
blank++;
}else{
other++;
}
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
}
习题8-9 分类统计各类字符个数 (15 分)
本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。
函数接口定义:
void StringCount( char *s );
其中 char *s
是用户传入的字符串。函数StringCount
须在一行内按照
大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数
的格式输出。
裁判测试程序样例:
#include <stdio.h>
#define MAXS 15void 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;
int letter1=0,letter2=0,digit=0,blank=0,other=0;
for(i=0;i<strlen(s);i++){
if(s[i]>='A'&&s[i]<='Z'){
letter1++;
}else if(s[i]>='a'&&s[i]<='z'){
letter2++;
}else if(s[i]>='0'&&s[i]<='9'){
digit++;
}else if(s[i]==' '){
blank++;
}else{
other++;
}
}
printf("%d %d %d %d %d",letter1,letter2,blank,digit,other);
}
总结
1、熟练掌握数组与指针的相关知识;
2、熟练掌握数组作为函数的参数在函数中的应用,指针作为函数的参数在函数中的应用;
3、对数组和指针的知识掌握的很熟练时,会发现这两个题目其实是一样的写法。