活动设计题
请编写一个函数void proc(char *tt, int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串abcdefghxyzabcdeffe后,程序的输出结果应该是:2 2 2 2 3 3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void proc(char *tt,int pp[])
{
}
void main()
{
char str[1000];
int bb[26],k;
system('CLS');
printf(t'\nPlease enter a char string:');
scanf('%s',str);
proc(str,bb);
for(k=0;k<26;k++)
printf('%d',bb[k]);
printf('\n');
}
【正确答案】void proc(char *tt,int pp[]) { int i; for(i=0;i<26;i++)//pp数组放字母的个数,因此其初始值都为0 pp[i]=0; for(;*tt!='\0';tt++) if(*tt>='a'&&*tt<='z') //在tt字符串中'a'到'z'26个字母各自出现的次数 pp[*tt-'a']++;//依次放在pp所指数组中 }
【答案解析】由函数proc()可知,数组pp中存放26个字母各自出现的次数,初始化为0。然后判断字符串tt中的每一个字符,每检查一个字符,将数组pp中相应的元素加1。