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

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

1、国家二级 C+机试(操作题)模拟试卷 189及答案与解析 一、基本操作题 1 下列给定程序中,函数 fun的功能是:在带头结点的单向链表中,查找数据域中值为 ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为 ch的结点,函数返回 0值。 请在程序的中括号处填入正确的内容并将中括号删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #define N 8 typedef struct list int data; strLlCt list*next; SLIST; SLIST*

2、Crearlist(char*); void outlist(SLIST*); int fun(SLTST*h, char ch) SLIST*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, q, a, w, x, r, d; head=crearlist(a); outlist(head); print; f(”Enter

3、 a letter: ”); scarlf(“ c“, &ch); *found* k=fun(【 3】 ); if(k=0) printf(“ nNot found! n“); else printf(“The sequence number is: d n“, k); SLIST*creatlist(char*a) SLIST*h, *p, *q; int i; h=p=(SLIST*)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p一 next=0; return h; void outliSt(SLIST*h) SLIS

4、T*p; p=h一 next; if(p=NULL) printf(“ nThe list is NULL! n“); else printf(“ nHead“); do printf(“一 c“, p一 data); p=p一 next; while(P!=NULL); printf(“一 End n“); 二、简单应用题 2 下列给定程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数 fun的作用是求出单向链表结点 (不包括头结点 )数据域中的最大值,并且作为函数值返回。 请改正函数 fun中的错误,使它能得出正确的结果。 注意:部分源程序在文件 NODI1 C

5、中,不要改动 main函数。不得增行 或删行,也不得更改程序的结构 ! 试题程序: #include #include #include typedef struct aa int data; struct aa*next; NODE; fun(NODE*h) int max=一 1; NODE*p; *found* p=h; while(p) if(p一 datamax) max=p一 data; *found* p=h一 next: return max; outresult(int s, FILE*pf) fprintf(pf, “ nThe max in link : d n“, s)

6、; NODE*creatlink(int n, int m) (NODE * h, *p, *s; int i; h=p=(NODE*)malloc(sizeof (NODE); h一 data=9999; for(i=1; idata=rand() m; s一 next=p一 next; p一 next=s; p=p一 next; p一 next=NULL; return h; outlink(NODE*h, FILE*pf) NODE*p; p=h一 next; fprintf(pf, “ n The LIST: n n HEAD“); while(P) fprintf(pf, “- d“

7、, p-data); p=p一 next; ) fprintf(pf, “ n“); main() NODE*head; int m; system(“CLS“); head=creatlink(12, 100); outlink(head, stdout); m=fun(head); printf(“ nThe RESULT: n“); outresult(m, Stdout); 三、综合应用题 3 编写函数 fun,其功 能是:根据以下公式计算 s,并将计算结果作为函数值返回,n通过形参传入。 例如,若 n的值为 11时,函数的值为 1 833333。 注意:部分源程序给出如下。 请勿改动

8、主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include#include#include#includefloat fun(int n)void main() int n; float s; system(“CLS“); printf(“ nPlease enter N: “); scanf(“ d“, &n); s=fun(n); printf(“The result is: f n“, s); 国家二级 C+机试(操作题)模拟试卷 189答案与解析 一、基本操作题 1 【正确答案】 (1)NULL (2)n (3)head, c

9、h 【试题解析】 填空 1: while循环语句用来判断是否到达链表结尾,链表结尾结点指针域是 NULL。 填空 2:若找到指定字符,则通过 return语句将该结点在链表的顺序号返回给main函数。 填空 3:函数调用语句,其形式是:函数 名 (实际参数表 ),因此根据函数定义语句,填入 head, ch。 二、简单应用题 2 【正确答案】 (1)p=h一 next; (2)p=p一 next; 【试题解析】 (1)因为链表的头结点没有数据域,所以对指针 p进行初始化时,要将 p指向头结点的下一个结点。 (2)通过指针 p的移动遍历链表,因此此处应改为 p=p-next;。 三、综合应用题

10、3 【正确答案】 float fun(int n) int i, s1=0; float s=0 0; for(i=1; i=n; i+) s1=s1+i; *求每一项的分母 * s=s+1 0 s1; *求多项式的值 * return s; 【试题解析】 此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。 本题中表达式的规律是 1+2+n 的倒数之和,那么可以通过 for循环语句来实现第 1项到第 n项的变化。其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为 0(或 0 0,根据变量数据类型来确定 ),再通过 for循环语句来完成累加过程。 本题中 sl用来表示每一项的分母,每一项的分母都是由前一项分母加项数。注意,由于 sl定义成一个整型,所以在 s=s+1 0 s1语句中不能把 1 0写成 1。

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

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

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