填空题
请补充函数fun(),该函数的功能是:按“0”~“9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。
注意:不能使用字符串库函数。
例如,输入“x=112385713.456+0.909*bc”,结果为:1=3, 3=2,
5=2, 7=1, 9=2。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的标号处填入所编写的若干表达式或语句。
试题程序
#include
<stdlib.h>
#include <stdio.h>
#define N
1000
void 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(______)
{
if(*p>='0'&&*p<='9')
______;
p++;
}
for(i=1, j=0; i<10; i=i+2,
j++)
______;
}
void
main()
{ char str[N];
int num[10],
k;
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");
}
【正确答案】
1、*p
bb[*p-'0']++
num[j]=bb[i]
【答案解析】[解析] 空(1):通过移动指针p来指向字符串tt中的各个字符,当指针p所指的字符为'/0'时,即指向字符串tt的最后一个字符,while循环结束。
空(2):将字符串中的数字字符'0'~'9'的个数都保存在数组bb[10]中。*p-'0'实现将数字字符转换成对应的数字。
空(3):由于奇数数字字符的个数存于bb[1]、bb[3]、bb[5]、bb[7]、bb[9]中,所以for循环的目的是将这些元素分别赋给num[0]、num[1]、num[2]、num[3]、num[4]。