2011二级c语言上机题库1. 程序填空
程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处 struct student t;
第二处 for(i=0;i<n-1;i++)
第三处 if(strcmp(a[i].name,a[j].name)>0)
【二级C语言上机题库2011】主要涉及的知识点是C语言的基本操作,包括结构体数组的使用、字符串处理、数组排序、链表操作以及条件判断等。
1. **程序填空**:
- 结构体数组定义:`struct student t;` 这里定义了一个名为`t`的`student`结构体变量,`student`通常包含学号、姓名和三门课的成绩等成员。
- 循环遍历:`for(i=0;i<n-1;i++)` 这是一个循环,从0到`n-2`遍历整个结构体数组,用于实现排序或其他操作。
- 字符串比较:`if(strcmp(a[i].name,a[j].name)>0)` 使用`strcmp`函数比较两个字符串的字典顺序,如果`a[i].name`大于`a[j].name`,则交换它们的位置,实现升序排列。
2. **程序修改**:
- 查找最大ASCII码字符并移动:这部分要求找到字符串`p`中ASCII码最大的字符,并将其移到最前面。`q=p+i`找到最大字符的位置,然后将后面的字符逐个向前移动。
- 选择法排序:`p=j`和`p=i`是在实现选择排序过程中,找到最小元素并将其与第一个元素交换的操作。
3. **程序设计**:
- 分数范围内的学生数据筛选:`fun`函数接收一个分数范围`l`和`h`,将符合条件的学生数据复制到新数组`b`中,并返回符合条件的学生数量。
- 链表中删除重复元素:删除链表中数据域值相同的结点,只保留一个,这涉及到链表的遍历和结点的删除操作。
- 整数筛选:`fun`函数找到1到m之间能被7或11整除的所有整数,并存入数组`a`,返回这些数的个数`n`。
4. **其他题目**:
- 数组逆置:通过`for`循环和临时变量`t`实现数组元素的逆序操作。
- 八进制字符串转十进制:将八进制字符串转换为对应的十进制整数,涉及字符到数值的转换。
- 指定学号学生数据查找:在结构体数组中查找指定学号的学生,找不到时设置特殊值表示未找到。
- 链表节点查找:在链表中查找具有特定数据域值的结点,并返回其在链表中的位置。
- 删除字符串空白字符:删除字符串中的空白字符,如空格、制表符、回车符和换行符。
- 字符串下标奇数位置字母转大写:遍历字符串,将下标为奇数的字符转换为大写字母。
这些题目覆盖了C语言的基础知识,包括数据结构(如结构体和链表)、字符串处理、数组操作、循环控制、条件判断、函数调用等。解决这些问题需要对C语言的基本语法和逻辑有深入理解。