活动设计题   请编写一个函数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。