问题 问答题

填空题请补充函数fun(),该函数的功能是:按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如:输入“x=112385713.456+0.909*bc”,结果为:1=3,3=2,5=2,7=1,9=2。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#define N 1000void fun(char *tt,int num[]){ int i,j; int bb[10]; char *p=tt; for(i=0;i<10;i++) { num[i]=0; bb[i]=0; } while(【1】) { if(*p>=’’0’’&&*p<=’’9’’) 【2】; p++; } for(i=1,j=0;i<10;i=i+2,j++) 【3】;}main(){ char str[N]; int num[10],k; clrscr(); printf("\nPlease enter a char string:"); gets(str); printf("\n**The original string**\n"); puts(str); fun(str,num); printf("\n**The number of letter**\n"); for(k=0;k<5;k++) { printf("\n"); printf("%d=%d",2*k+1,num[k]); } printf("\n"); return;}

答案

参考答案:【1】*p 【2】bb[*p-’0’]++ 【3】num[j]=bb[i]

解析:填空1:通过移动指针p,指向字符串tt中的各个字符,当指针p所指的字符为’\0’时,即指向字符串tt的最后一个字符,while循环结束。填空2:将字符串中的数字字符’0’到’9’的个数都保存在数组bb[10]中。*p-’0’实现将字符’0’的个数保存在bb[0]中,将字符’1’的个数保存在bb[1]中,依此类推,直到将字符’9’的个数保存在bb[9]中。填空3:由于奇数数字字符的个数存于bb[1]、bb[3]、bb[5]、bb[7]、bb[9]中,所以for循环的目的是将这些元素分别赋给num[0]、num[1]、num[2]、num[3]、num[4]。

多项选择题
多项选择题