
C二级上机的一道题
18、给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:Thisi...
18、给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:This is a C language program.,函数的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun(char *s)
{ int n=0, flag=0;
while(*s!='\0')
{ if(*s!=' ' && flag==0) {
/**********found**********/
__1__ ; flag=1;}
/**********found**********/
if (*s==' ') flag= __2__ ;
/**********found**********/
__3__ ;
}
return n;
}
main()
{ char str[81]; int n;
printf("\nEnter a line text:\n"); gets(str);
n=fun(str);
printf("\nThere are %d words in this text.\n\n",n);
}
题18:第1处答案:n++ 第2处答案:0 第3处答案:s++
我的问题是第1和第3空,请帮忙解释下,谢谢!!! 展开
例如,形参s所指的字符串为:This is a C language program.,函数的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int fun(char *s)
{ int n=0, flag=0;
while(*s!='\0')
{ if(*s!=' ' && flag==0) {
/**********found**********/
__1__ ; flag=1;}
/**********found**********/
if (*s==' ') flag= __2__ ;
/**********found**********/
__3__ ;
}
return n;
}
main()
{ char str[81]; int n;
printf("\nEnter a line text:\n"); gets(str);
n=fun(str);
printf("\nThere are %d words in this text.\n\n",n);
}
题18:第1处答案:n++ 第2处答案:0 第3处答案:s++
我的问题是第1和第3空,请帮忙解释下,谢谢!!! 展开
1个回答
展开全部
函数fun中,while循环中,逐一判断字符串s的每一个字符,前两个if语句判断当前字符是什麼字符,为了实现”逐一”,3的位置必然是将s的指针后移,所以3这个位置应该填s++
因为函数是逐字符判断的,而一个单词有时候是不止一个字符的,所以flag的作用就是标志当前这个单词是否已经被统计过了.分析这段代码:
{ if(*s!=' ' && flag==0) {
__1__ ; flag=1;}
当前字符不是空格,而且该字符所属的单词没有被统计过的情况下,很明显此时应该要将计数器加1,所以在1这个位置应该填入n++.同时应该将flag置1,即标识出该单词已经被统计过了,那麼下一次循环如果仍然是该单词中的字符,虽然不是空格,但是由于flag=1,所以就不会重复统计了.
if (*s==' ') flag= __2__ ;
这段代码比较好理解,即当碰到空格,就将flag变成0,表示上一个单词已经结束了,下一循环如果出现非空格的单词的话,应该进行统计.
因为函数是逐字符判断的,而一个单词有时候是不止一个字符的,所以flag的作用就是标志当前这个单词是否已经被统计过了.分析这段代码:
{ if(*s!=' ' && flag==0) {
__1__ ; flag=1;}
当前字符不是空格,而且该字符所属的单词没有被统计过的情况下,很明显此时应该要将计数器加1,所以在1这个位置应该填入n++.同时应该将flag置1,即标识出该单词已经被统计过了,那麼下一次循环如果仍然是该单词中的字符,虽然不是空格,但是由于flag=1,所以就不会重复统计了.
if (*s==' ') flag= __2__ ;
这段代码比较好理解,即当碰到空格,就将flag变成0,表示上一个单词已经结束了,下一循环如果出现非空格的单词的话,应该进行统计.

2025-07-16 广告
领课题库支持单选、填空、编程题等12种题型,可随机组卷。防作弊功能包括人脸识别、IP限制,某高校用其组织10万人在线考试无故障。领课多端适配:电脑Web、安卓/iOS APP、微信小程序、H5。学员可碎片化学,数据实时同步,某网校APP端用...
点击进入详情页
本回答由领课提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询