1、国家二级 C语言机试(操作题)模拟试卷 33及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为: 2、 4、 6、 8、 10,逆置后,从头至尾结点数据域依次为: 10、 8、 6、 4、 2。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #define N 5 typedef struct node int data; struct node * nex
2、t; NODE; /*found*/ _1_ fun(NODE。 h) NODE *P, *q, *r; P=h; if(P=NULL) return NULL; q=P一 next; P一 next=NULL; while(q) /*found*/ r=q一 _2_: q一 next=P; p=q; /*found*/ q=_3_ ; return P; NODE * creatliSt(int a) NODE *h, *P, *q; int i; h=NULL; for(i=0; idata=ai; q一 next=NULL; if(h=NULL)h=P=q; elseP一 next=q;
3、 P=q; ) return h; VOid outliSt(NODE * h) NODE *P; p=h; if(p=NULL)printf(“The list iS NULL! n”); elSe printf(“ nHead”); dO printf(“一 d”, P一 data); p=p 一 next; ) while(P!=NULL); printf(“一 End n”); main() NODE *head; int aN=2, 4, 6, 8, 10); head=creatlist(a); printrf(“ nThe original list: n”); outlist(
4、head); head=fun(head); Printf(“ nThe list after inverting: n”); outlist(head); 二、程序修改题 2 给定程序 MODll C中函 数 fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为 a u,则将其转换为其后的第 5个字母;若小写字母为 v z,使其值减 21。转换后的小写字母作为函数值返回。例如,若形参是字母 A,则转换为小写字母 f若形参是字母 W,则转换为小写字母 b。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构
5、! #include #include char fun(char c) if(c=A c=a c=v . *置初始空串 * c s=一 1 ; *置成绩为一 1* for(i=0; iN; i+) if(strcrap(ai num, b)=0) *判 断学号是否相等 * strcpy(c num, ai num); *相 等,则对学号进行赋值 * c s=ai s ; *相等,则对成绩进行 赋值 * break; *退出循环体 * return c; *返回结构体变量 * 【试题解析】 该程序功能是函数返回指定学号的学生数据,指定的学号在主函数中输入。解题思路是在循环过程中,使用 if判断表达式,将输入的学号与所有的学号进行比较,如果找到该学号,将其赋值到 指定变量,否则将空格赋值到指定变量,表明没有查找到该学号。