C语言程序设计:去除偶数位数字

需积分: 10 1 下载量 121 浏览量 更新于2024-07-27 收藏 11.67MB DOC 举报
"2012年二级C语言上机题库" 在C语言编程中,题目涉及到了几个关键的知识点,包括链表操作、指针使用、字符串处理、函数参数传递以及条件判断。以下是这些知识点的详细说明: 1. 链表操作: - 题目中出现的`t = t->next`表示移动指针`t`到链表的下一个节点,这是遍历链表的基本操作。 - `free(t)`用于释放链表节点的内存,防止内存泄漏。这表明程序可能涉及到动态分配和释放内存的链表操作。 2. 指针和函数参数: - `fun(char*a)`表示函数接受一个字符指针作为参数,而不是字符。在C语言中,传递数组时通常用指针来代替数组名。 - `printf("%c", *a)`正确地打印指针`a`指向的字符,`*a`是解引用操作,获取指针所指的值。 3. 字符串处理和比较: - `for(i = 0; *p && *q; i++)` 这个循环用于比较两个字符串,直到遇到空字符或其中一个字符串结束。 - `if(*p == 0 && *q == 0) return s;` 判断两个字符串是否都已结束,如果都结束,则返回`s`。 - `if(*p) return s;` 如果第一个字符串`p`未结束而第二个字符串`q`已结束,返回`s`。 - `else return t;` 如果第二个字符串`q`未结束而第一个字符串`p`已结束,返回`t`。 4. 数组操作和条件判断: - `for(i = j + 1; i < n; i++)` 修改为`for(i = j; i < n; i++)`,这样可以避免遗漏数组元素。 - `if(a[i] < a[p])` 判断当前元素是否小于已找到的最小值,如果是则更新最小值索引。 - `p = j;` 改为`p = i;` 当找到更小的元素时,更新`p`为当前索引`i`,以保持最小值的正确跟踪。 5. 函数调用和数组初始化: - `*n = 0;` 初始化计数器`n`为0,用于记录满足条件的元素数量。 - `for(i = 7; i <= m; i++)` 循环检查每个数字,如果`i % 7 == 0`或`i % 11 == 0`,则将该数字添加到数组`a`中。 6. 链表查找和递归: - `while(p != 0)` 用于遍历链表直到找到匹配的节点或到达链表末尾。 - `if(p->data == ch) return n;` 当找到与`ch`匹配的节点时,返回当前节点的位置。 - `k = fun(head, ch);` 调用函数查找链表中的特定字符`ch`,返回匹配的节点位置。 以上就是从给定的2012年二级C语言上机题库中提取的关键知识点,涵盖了C语言编程中的基础操作和常见问题。在实际编程中,理解和掌握这些知识点对于解决类似问题至关重要。