【项目2-字符统计】
下面的程序可以统计出一个字符串中数字字符的个数:
#include <stdio.h> int main() { char str[50]; int i=0,n=0; printf("输入字符串:"); gets(str); while(str[i]!='\0') { if(str[i]>='0'&&str[i]<='9') n++; i++; } printf("其中的数字个数是: %d\n", n); return 0; }
请分别编制程序,完成下面的处理:
(1)统计字母'A'出现的次数;
[参考解答]
#include <stdio.h> int main() { char str[100]; int i=0,n=0; printf("输入字符串:"); gets(str); while(str[i]!='\0') { if(str[i]=='A') n++; i++; } printf("其中字符 A 出现了 %d 次\n", n); return 0; }
(2)统计字符串中(大/小写)字母个数;
[参考解答]
#include <stdio.h> int main() { char str[100]; int i=0,up=0,low=0; printf("输入字符串:"); gets(str); while(str[i]!='\0') { if(str[i]>='A'&&str[i]<='Z') up++; else if(str[i]>='a'&&str[i]<='z') low++; i++; } printf("其中大写字母个数是: %d \n", up); printf("其中小写字母个数是: %d \n", low); return 0; }
(3)统计每一个元音字母个数
[参考解答]
#include <stdio.h> int main() { int j,a=0,e=0,i=0,o=0,u=0; char str[100]; gets(str); j=0; while(str[j]!='\0') { switch(str[j]) { case 'a': ++a; break; case 'e': ++e; break; case 'i': ++i; break; case 'o': ++o; break; case 'u': ++u; break; } j++; } printf("a: %d; e: %d; i: %d; o: %d; u: %d\n", a, e, i, o, u); return 0; }
(4)统计每一个数字字符出现的次数;
提示:可以定义一个数组int a[10],保存’0’-’9’在字符串中出现的次数(例a[0]表示字符’0’的个数)
[参考解答]
#include <stdio.h> int main() { char str[50]= {"Tel:18363803401, QQ:90878965"}; int i,a[10]= {0}; //a[0]代表'0'出现的个数……,初值全为0 for(i=0; str[i]!='\0'; ++i) //换种循环,这不是关键 { if(str[i]>='0'&&str[i]<='9') a[str[i]-'0']++; //若str[i]为'0',a[0]将增加;也可以写作a[str[i]-48]++ } printf("\"%s\" 中各数字出现的次数是: \n", str); for(i=0; i<10; ++i) printf("\'%d\'---%d\n", i, a[i]); return 0; }
(5)统计每一个字母出现的个数
[参考解答]
#include <stdio.h> int main() { char str[100]= {"Checking for existence: D:\\C\\codeBlock\\example\\bin\\Debug\\example.exe"}; int i,a[26]= {0}; //a[0]代表'a'出现的个数……,初值全为0 for(i=0; str[i]!='\0'; ++i) //换种循环,这不是关键 { if(str[i]>='a'&&str[i]<='z') a[str[i]-'a']++; //若str[i]为'a',a[0]将增加;也可以写作a[str[i]-97]++ } printf("\"%s\" 中各小写字母出现的次数是: \n", str); for(i=0; i<26; ++i) printf("\'%c\'---%d\n", (char)(i+97), a[i]); return 0; }
时间: 2025-01-08 00:50:26