一、题目描述
从键盘输入一行字符串,统计其中的大写字母、小写字母、空格、数字、和其他字符的个数。
二、分析解答
本题主要考察C语言字符串的相关知识点。字符串处理是C语言中很重要的一个知识点,但在C语言汇总并没有字符串类型,因此,只能采用字符数组或者字符指针的形式来使用字符串。要记住一点,不论我们使用的是字符串常量还是字符串变量,为了方便处理字符串,系统自动 给字符串加上一个结束标志’\0’(’\0’代表ASCII为0的字符,他不是可显示字符,只是一个空操作符,提供标志辨识功能,用它做结束标志不会产生附加的操作或者增加有效字符)。字符串在内存中连续存储,占用一块连续的空间。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include<stdio.h> #include<stdlib.h>
int main(){
int n,i=0,alpha=0,Alpha=0,digit=0,space=0,other=0;
char *str;
scanf("%d",&n); getchar();
if((str = (char *)malloc(n * sizeof(char))) == NULL){ printf("Not able to allocate memory"); exit(1); }
gets(str);
while(*(str+i) != '\0'){ if(*(str+i) >= 'A' && *(str+i) <= 'Z' ) { Alpha ++; }else if( *(str+i) >= 'a' && *(str+i) <= 'z' ){ alpha ++; }else if( *(str+i) >= '0' && *(str+i) <= '9' ){ digit ++; }else if( *(str+i) == ' ' ){ space ++; }else{ other ++; }
i++; } printf("alpha = %d \n Alpha = %d\n digit = %d \n space=%d\n other=%d \n ",alpha,Alpha,digit,space,other);
return 0;
}
|
也可以使用下列方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include<stdio.h> #include<stdlib.h>
int main(){
int n,i=0,alpha=0,Alpha=0,digit=0,space=0,other=0;
char *str;
scanf("%d",&n); getchar();
if((str = (char *)malloc(n * sizeof(char))) == NULL){ printf("Not able to allocate memory"); exit(1); }
while(i<=n){ *(str+i) = getchar();
i++; }
for(i=0;i<n;i++){ if(*(str+i) >= 'A' && *(str+i) <= 'Z' ) { Alpha ++; }else if( *(str+i) >= 'a' && *(str+i) <= 'z' ){ alpha ++; }else if( *(str+i) >= '0' && *(str+i) <= '9' ){ digit ++; }else if( *(str+i) == ' ' ){ space ++; }else{ other ++; } }
printf("alpha = %d \n Alpha = %d\n digit = %d \n space=%d\n other=%d \n ",alpha,Alpha,digit,space,other);
return 0;
}
|
三、归纳总结
1,字符串处理在计算机中会经常遇到,因此,了解字符串的定义、初始化、输入输出、存储方式等至关重要。
2,C语言编译系统会自动的在字符串末尾添加’\0’辨识符作为字符串结束的标志,因此,在循环读取字符串中的字符时可以使用这个标志作为循环跳出的判断。
3,为了方便字符串的输入输出,C语言提供了除 scanf()之外的getchar()、gets()函数。可以方便我们对字符串进行输出输出。
4,字符数组的数组名是字符串首地址,是一个常量,不可以对其进行运算,字符串指针是一个指针变量,可以进行运算,因此可以更灵活的操作字符串,提高字符串的处理效率。
(如果有任何问题,可以在下方评论留言,谢谢。)