1、国家二级 C语言机试(操作题)模拟试卷 23及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:在带有头结点的单向链表中,查找数据域中值为 ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为 ch的结点,函数返回 0值。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #define N 8 typedef struct list int data ; struer liSt *next; SLIST
2、; SLIST *creatlist(char*); void outlist(STIST *); int fun(SLIST *h, char ch) STIST *P; int n=0; p=h一 next; /*found*/ while(p !=_1_) n+; /*found*/ if (P一 data=ch)return_2_; else P=P一 next; return 0; main() SLIST *head; int k; char ch; char aN: m, P, g, a, w, X, r, d; head=crearliSt(a); outlist(head);
3、 printf(“Enter a letter: ”); scarlf(“ C”, int S; STU; STU *fun(STU a, int m) STU bN, *t; int i, j, k; /*found*/ t=(STU *)calloc(Sizeof(STU), m) for(i=0; ibj S)j=i; /*found*/ t(k)=b(j); bj s=0; return t; outresu2t(STU a, FTLE *pf) int i; for(i=0; i1 0) printf(“ nGive the number of the Students who ha
4、ve better score: ”); scanf(“ d”, m); pOrder=fun(a, m); printf(“*THE RESULT * n“); printf(“The top: n“); for(i=0; i #defihe N 16 typedef struct char num10; int s ; STREC; int fun(STREC *a, STREC *b) main() STREC sN=“GA05”, 85), “GA03”, 76), “GA02”, 69, “GA04”, 85), “GA01”, 91, “GA07”, 72), “GA08”, 64
5、, “GA06”, 87, “GA015”, 85), “GA013”, 91), “GA012”, 64, “GA014”, 91), “GAO11”, 91, “GA017”, 64), “GA018”, 64, “GA016”, 72; STREC hN; int i, n; FILE *out; n=fun(s, h); printf(“The d lowest score: n”, n); for(i=0; idata=ch)”成立,则已经找到数据域中值为 ch的结点,返回顺序号,即 “return n: ”。 第三空 : fun函数的调用形式是: fun(SLIST *h, cha
6、rch),第一个参数是头结点地址,第二个参数是需要寻找的 ch值,因此第三空处应该是 “k=fun(head,ch): ”。 二、程序修改题 2 【正确答案】 (1)t=(STU *)calloc(sizeof(STU), m); (2)tk=bj; 【试题解析】 本题中函数的功能是按学习成绩从高到低的顺序找出前 m(m10)名学生。利用循环结构实现对定义的结构体中的成绩域进行排序。 解题思路 (1)题干中要求 结构体 STU类型的 m个学生放在动态分配的连续存储区中,“t=(STU*)calloc(sizeof(STU), m)”语句没有使用分号 “; ”结束,因此需要在语句结尾处加分号。
7、calloc函数是 C语言的动态分配函数,分配存储空间。 (2)第二个标识下是将 b数组拷贝到 t数组,在 C语言中,数组元素的访问使用中括号 “”而不是元括弧 “()”,因此第二标识下应改成 “tk=bi; ”。 三、程序设计题 3 【正确答案】 int i, j=0, min=a0 s; for(i=0; iai s) j=0; bj+=ai; min=ai s ; else if(min=ai s) bj+=ai; return j ; 【试题解析】 该程序功能是把分数最低的学生数据放在 b所指的数组中。本题是关于求解结构体中某些成员的最小值,首先将第一个值设定为最小值,并在循环中将其他所有值与该值进行比较,求得最小值。然后将最小值与所有值进行比较,求得所有的最小值。 解题思路 (1)要把最低分数的学生数据放在数组中,首先求出最低分数,再使用一个 for循环把所有的成绩进行比较,找出最低的分数来。 (2)找出所有与最低分数相等的学生,并将最低分数的人数累加。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1