C语言程序设计:题目集与解析

5星 · 超过95%的资源 需积分: 3 14 下载量 170 浏览量 更新于2024-07-30 1 收藏 222KB DOC 举报
"这个资源包含了2011年9月计算机二级C语言考试的三套上机题目,涉及的知识点包括C语言的结构体数组操作、字符串处理、链表操作、排序算法以及条件判断和循环控制。" 第一套题目: 1. 程序填空: 这部分题目考察的是结构体数组的排序,特别是根据字符串(姓名)进行字典序排序。`struct student t;`定义了一个名为student的结构体类型,通常包含学号、姓名和成绩等成员。`for(i=0; i<n-1; i++)`是遍历数组的标准循环,用于比较相邻元素。`if(strcmp(a[i].name, a[j].name)>0)`使用`strcmp`函数比较两个字符串的字典顺序,如果第一个字符串大于第二个,则返回正数。 2. 程序修改: 这道题目要求在字符串中找到ASCII码值最大的字符并移到首位,然后移动其他字符。`q=p+i;`找到最大字符的索引,`while(q>p)`循环用于将前面的字符逐个后移。 3. 程序设计: 此题目的函数`fun`需要筛选出指定分数范围内(1到h)的学生数据,并存入新的数组。`for`循环遍历所有学生,`if((a[i].s>=1&&a[i].s<=h)`用于判断分数是否在范围内,符合条件则添加到新数组`b`。 第二套题目: 1. 程序填空: 这道题目涉及到单向链表的删除操作,`free(q);`释放不再需要的节点,`q=p->next;`获取下一个节点,`q=q->next;`继续遍历链表。 2. 程序修改: 函数`fun`是使用选择排序算法,`p=j;`应该改为`p=a[j];`来选取当前最小元素,而`p=i;`是为了更新最小元素的位置。 3. 程序设计: `fun`函数要求找出1到m之间可以被7或11整除的数字,将它们存入数组`a`,并返回这些数的个数。`for`循环遍历所有可能的数字,`if((i%7==0)||(i%11==0))`检查是否满足条件,满足则添加到数组`a`。 第三套题目: 1. 程序填空: 这部分题目是关于数组的逆置,`f`和`t`是用于交换元素的临时变量。题目没有给出完整代码,但一般做法是用`f=a[i]`保存当前元素,`a[i]=t`将末尾元素移到当前位置,然后`t=f`恢复被保存的元素,最后`i--`反向遍历数组。 总结: 这些题目涵盖了C语言编程的基础知识,包括数据结构(结构体、链表)、字符串处理、数组操作、排序算法以及基本的逻辑控制。对于准备C语言二级上机考试的考生来说,理解和掌握这些知识点是非常重要的。