全国计算机等级考试二级C语言题库与解答

版权申诉
0 下载量 165 浏览量 更新于2024-07-13 收藏 191KB PDF 举报
"历年全国计算机等级考试_二级C语言上机考试题库及答案[1].pdf" 这篇摘要主要涉及了C语言编程中的几个核心知识点,包括链表操作、字符串处理以及字符编码转换。 1. 链表操作: 在给定的代码段中,`fun` 函数的目的是在单向链表中查找数据域值为 `ch` 的节点,并返回其在链表中的位置。链表的定义使用了结构体 `SLIST`,包含一个整型数据域 `data` 和一个指向下一个节点的指针 `next`。函数通过遍历链表,使用指针 `p` 指向当前节点,初始时 `p = h->next`,其中 `h` 是链表的头结点。当 `p` 不等于 `NULL` 时,循环继续,检查当前节点的数据域是否等于目标值 `ch`。如果找到匹配的节点,函数返回当前计数器 `n` 的值,表示节点的位置;否则,更新 `p` 为下一个节点。未找到匹配节点时,函数返回 `0`。 修改后的代码: ```c while (p != NULL) { n++; if (p->data == ch) return n; else p = p->next; } return 0; ``` 2. 字符串处理: 在 `MODI1.C` 文件中,`fun` 函数的任务是删除输入字符串 `p` 中的所有空白字符。这里使用了标准库函数 `isspace()` 来检测字符是否为空格、制表符、回车或换行符。如果当前字符不是空白,将其复制到新数组 `c` 中。完成后,将新字符串的末尾添加空字符 `\0` 以表示字符串结束。最后,使用 `strcpy()` 将新字符串覆盖原字符串。 修改后的代码: ```c for (i = 0, t = 0; p[i]; i++) { if (!isspace(*(p + i))) c[t++] = p[i]; } c[t] = '\0'; strcpy(p, c); ``` 3. 字符编码转换: 提供的题目还描述了一个函数 `fun` 的需求,即转换输入字符串 `ss` 中所有下标为奇数位置的字母为大写。这个功能可以通过遍历字符串,检查每个字符的下标是否为奇数,并且该位置的字符是字母,如果是,则将其转换为大写字母。转换方法是,对于小写字母,减去32(ASCII码差值)即可得到对应的大写字母。 示例实现: ```c for (i = 1; i < strlen(*ss); i += 2) { if (*ss[i] >= 'a' && *ss[i] <= 'z') *ss[i] -= 32; } ``` 4. 链表长度计算: 另一段代码片段中,`fun` 函数用于计算单向链表的长度。在函数内部,初始化一个变量 `n` 为0,表示链表节点的数量。然后遍历链表,每访问到一个节点,`n` 增加1。遍历直到链表末尾(`p` 不再指向有效节点,即 `p == NULL`)。 示例实现: ```c int n = 0; // ... while (p != NULL) { n++; p = p->next; } // ... ``` 以上内容涵盖了C语言中的基本数据结构(链表)、字符串处理、字符编码转换以及基本的逻辑控制。这些都是C语言学习者必须掌握的重要概念。