给定程序中, 函数 fun 的功能是: 将形参 s 所指字符串中所有 ASCII 码值小于 97 的字符存入形参 t 所指字符数组中, 形成一个新串, 并统计出符合条件的字符个数作为函数值返回。
例如, 形参 s 所指字符串为: Abc@1x56*, 程序执行后 t 所指字符数组中的字符串应为: A@156*。
请在程序的下画线处填入正确的内容并把下画线删除, 使程序得出正确的结果。
注意: 部分源程序给出如下。
请勿改动主函数 main 和其他函数中的任何内容, 仅在 fun 函数的横线上填入所编写的若干表达式或语句。
【试题源程序】
#include
int fun(char *s,char *t)
{
int n=0;
while(*s)
{
if(*s<97)
{
*(t+n)=①________;
n++;
}
②________;
}
*(t+n)=0;
return ③________;
}
void main()
{
char s[81],t[81];
int n;
printf("\nEnter a string:\n");
gets(s);
n=fun(s,t);
printf("\nThere are %d letter which ASCII code is less than 97:%s\n",n,t);
}
①* s
②s++
③n
填空 1: while 循环的功能是将 s 所指字符串中 ASCAII 码值小于 97 的字符存入 t 所指字符串中, 显然此处应该填 s 所指字符串中的内容, 即*s。
填空 2: 从前一语句中可以想到, 当把 s 所指字符串中的字符赋给 t 所指字符串后, 应该修改指针, 使指针s 指向下一个字符。 所以这里应该填 s++。
填空 3: 根据题意, 需要返回符合要求的字符个数。 从程序中可以看出, 变量 n 一直在记录符合条件的字符个数, 所以这里应填 n。