2011计算机二级考试C语言十套上机题汇总(6).pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在给定的C语言题目中,目标是完成一个函数`fun()`,该函数的作用是统计一个只包含小写字母和空格的字符串`str`中的单词数量。已知字符串的开始不会有空格,并且单词之间由一个空格隔开。例如,如果`str = "how do you do"`,那么单词个数`num`应为4。 函数`fun()`的代码给出了大部分框架,但缺失了一个重要的循环条件。我们需要在`for`循环的条件中填写合适的表达式,以便正确地遍历字符串直到结束。通常,C语言中的字符串是由字符数组表示的,以空字符`\0`作为结束标志。因此,当查找单词时,我们需要检查字符是否为小写字母,以及下一个字符是否为空格或字符串的结尾(即是否为`\0`)。 根据题目要求,循环应该在以下条件下继续: 1. 当前索引`i`小于字符串的长度,即`i < strlen(s)`,这是因为我们需要遍历到字符串末尾。 2. 为了确保我们不超出字符串的边界,我们在检查`s[i+1]`之前需要确保`i+1`仍在字符串范围内,即`i+1 < strlen(s)`。 但是,由于`#define N 80`已经定义了最大字符串长度,我们可以假设字符串长度不会超过80,所以在这里我们不必担心数组越界的问题。因此,循环条件可以简化为`i < strlen(s)`。 将这些信息整合到代码中,`for`循环应该如下所示: ```c for (i = 0; i < strlen(s); i++) ``` 接下来,我们需要在满足条件的情况下增加计数器`n`,表示找到了一个新的单词。这个条件是当前字符`s[i]`是小写字母,并且下一个字符`s[i+1]`是空格或字符串的结束。所以,我们可以在`if`语句中增加`n++`来实现这个功能: ```c if (s[i] >= 'a' && s[i] <= 'z' && (s[i+1] == ' ' || s[i+1] == '\0')) { n++; } ``` 完整的`fun()`函数如下: ```c void fun(char *s, int *num) { int i, n = 0; for (i = 0; i < strlen(s); i++) { if (s[i] >= 'a' && s[i] <= 'z' && (s[i+1] == ' ' || s[i+1] == '\0')) { n++; } } *num = n; } ``` 在主函数`main()`中,需要调用`fun()`并传递字符串`str`和一个整型变量`num`来接收结果。然后,主函数可以输出`num`的值,以验证函数是否正确计算了单词个数。注意,为了确保代码的正确性,还需要包括必要的头文件`<string.h>`来使用`strlen()`函数。 这是一个基础的C语言编程问题,涉及到了字符串处理、字符判断、循环控制以及函数参数的使用。在实际的二级计算机考试中,这种题目旨在测试考生对C语言基础知识的理解和应用能力。
- 粉丝: 18
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助