[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc

上传人:ownview251 文档编号:498254 上传时间:2018-11-28 格式:DOC 页数:6 大小:32KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷317及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 317及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参 n所指的存储单元中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h #defitie N 8 typedef struct list int data; struer list*next; SLIST; SLIST*creatlist(int *a);

2、void outlist(SLIST*); void fun(SLTST*h, int*n) SLIST*P; *found* 【 1】 =0; P=h next; while(P) (*n )+; *found* p=P 【 2】 ; main() SLIST*head; int aN=12, 87, 45, 32, 91, 16, 20, 48), num; head=creatlist(a); outlist(head); *found* fun(【 3】 , &hum); printf(“ nnumber= d n“, num); SLIST*creatlist(int a) SLIS

3、T*h, *P, *q; int i; h=P=(SLIST*)malloc(sizeof(SLIST); for(i=0; i N; i+) q=(SLIST*)malloc(sizeof(SLTST); q data=ai; P next=q; p=q; P next=0; return h; void outlist(SLTST*h) SLIST*P; P=h next; if(P=NULL) printf(“The list is NULL! n“); else printf(“ nHead“); do printf(“ d“, p data); p=P next; ) while(P

4、!=NULL); printf(“ End n“); 二、程序修改题 2 下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun的功能是将单向链表结点 (不包括头结点 )数据域为偶数的值累加起来,并且作为函数值返回。 请改正函 数 fun中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include conio h #include stdlib h typedef struct aa int data; struct aa *

5、next; NODE; int fun(NODE * h) int sum=0; NODE *P; P=h next; *found* while(P next) if(P data 2=0) sum+=p data; *found* P=h next; return sum; NODE*treatlink(int n) NODE*h, *p, *s; int i ; h=P=(NODE*)malloc(sizeof(NODE); for(i=1; i n; i+) S=(NODE*)malloc(sizeof(NODE); S data=rand() 16; S next=P next; P

6、 next=s; p=p next; p next=NULL; return h; outlink(NODE*h) NODE*P; P=h next; printf(“ n n The LIST: n n HEAD“); while(p) printf(“ d“, P data); P=P next; printf(“ n“); void main() NODE*head; int sum; system(“CLS“); head=creatlink(10); outlink(head); sum=fun(head); printf(“ nsum= d“, sum); 三、程序设计题 3 函数

7、 fun的功能是:将 s所指字符串中下标为偶数同时 ASCII值为奇数的字符删除, s所指串中剩余的字符形成的新串放在 t所指 的数组中。 例如,若 s所指字符串中的内容为 ”ABCDEFG12345”,其中字符 C的 ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符 1的 ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后 t所指的数组中的内容应是 “BDFl2345“。 注意:部分源程序在文件 PROG1 C中。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdi

8、o h #include string h void fun(char*, char t) main() char s100, t100; void NONO(); printf(“ nPlease enter string S: “); scanf(“ s“, s); fun(s, t); printf(“ nThe result is: s n“, t); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * char S100, t100; FILE* rf, (wf; int i; rf=fopen(“in dat“, “r“);

9、wf=fopen(“out dat“, “W“); for(i=0; i 10; i+) fscanf(rf, “ s“, s); fun(s, t); fprintf(wf, “ s n“, t); fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 317答案与解析 一、程序填空题 1 【正确答案】 (1)*n (2)next (3)head 【试题解析】 填空 1: *n用来存放结点的个数,对其赋初值为 0。 填空 2: while循环用于遍历链表,循环一次,指针指向链表的下一个结点。 填空 3:根据函数定义语句确定调用函数的实际参数,即 fun(he

10、ad, &num);。 二、程序修改题 2 【正确答案】 (1)while(p!=NULL) (2)p=p next; 【试题解析】 (1)判断当前指针 p指向的结点是否存在,若存在则对该结点数据域进行判断操作。 (2)判断结束后指针指向下一个结点。 三、程序设计题 3 【正确答案】 Void fun(char*s, char t) int i, j =0, for(i=0; i strlen(s); i+) if(!(i 2)=0 (si 2) tj+=si; tj=0; 【试题解析】 本题是从一个字符串按要求生成另一个新的字符串。我们使用 for循环语句来解决这个问题。在赋值新的字符串之前,先对数组元素的下标和ASCII码的值进行判断,将满足要求的元素赋给新的字符串。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1