1.填空題
下列給定程序中,函數(shù)fun()的功能是:將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。
【答案】
【1】long d 【2】d%2==0
3.編程題
請(qǐng)編寫(xiě)一個(gè)函數(shù)void fun(char *tt,int pp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。
例如,當(dāng)輸入字符串a(chǎn)bcdefgabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
void fun(char*tt,int pp[])
{
}
main()
{ char aa[1000];
int bb[26],k,n;
clrscr();
printf("\nplease enter a char string:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)printf("%d",bb[k]);
printf("\n");
}
【答案】
void fun(char*tt,int pp[])
{
int i;
for(i=0;i<26;i++)
pp[i]=0;
while(*tt)
{switch(*tt)
{
case'a':pp[0]++;break;
case'b':pp[1]++;break;
case'c':pp[2]++;break;
case'd':pp[3]++;break;
case'e':pp[4]++;break;
case'f':pp[5]++;break;
case'g':pp[6]++;break;
case'h':pp[7]++;break;
case'i':pp[8]++;break;
case'j':pp[9]++;break;
case'k':pp[10]++;break;
case'l':pp[11]++;break;
case'm':pp[12]++;break;
case'n':pp[13]++;break;
case'o':pp[14]++;break;
case'p':pp[15]++;break;
case'q':pp[16]++;break;
case'r':pp[17]++;break;
case's':pp[18]++;break;
case't':pp[19]++;break;
case'u':pp[20]++;break;
case'v':pp[21]++;break;
case'w':pp[22]++;break;
case'x'p:pp[23]++;break;
case'y':pp[24]++;break;
case'z':pp[25]++;break;
}
tt++;
}
}
【考點(diǎn)】字符串、switch語(yǔ)句、數(shù)據(jù)統(tǒng)計(jì)的應(yīng)用。
【解析】
void fun(char*tt,int pp[])
{ int i;/*聲明一個(gè)局部變量i*/
for(i=0;i<26;i++)/*pp[]是在main函數(shù)中聲明的數(shù)組bb[26]的形參,用于返回小寫(xiě)字母的個(gè)數(shù),由于其初始值 是不確定的,因此必須賦初值,計(jì)數(shù)前字母的個(gè)數(shù)為0*/
pp[i]=0;
while(*tt)/*while用于判斷字符串是否結(jié)束,也可以寫(xiě)為while(*tt!=‘\0’)*/
{switch(*tt)/*逐個(gè)訪問(wèn)字符,判斷字符是否為小寫(xiě)字母并分別計(jì)數(shù)*/
{
case ’a’:pp[0]++;break;/ *由于switch語(yǔ)句是從前到后運(yùn)行的,所以當(dāng)已經(jīng)找出一個(gè)小寫(xiě)字母后不能自動(dòng) 退出循環(huán),因而break語(yǔ)句不能省略*/
case’b’:pp[1]++;break;
……
}
tt++;/*指向字符串的指針t t指向下一個(gè)字符*/}
}
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |