1、国家二级 C+机试(操作题)模拟试卷 164及答案与解析 一、基本操作题 1 给定程序中,函数 fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为 2、 4、 6、 8、 10,逆置后,从头至尾结点数据域依次为10、 8、 6、 4、 2。 请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #define N 5 typedef struct node int data; struct node * next; NODE; *f
2、ound* 【 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一 nexL=NULL; if(h=NULL)h=p=q; elsep-next=q; p=q; ) return h;
3、 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=treatlist(a); printf(“ nThe original list: n“); outlist(head); head=fun(head); p
4、rintf(“ nThe list after inverting: n“); outlist(head); 二、简单应用题 2 下列给定程序 中,函数 fun的功能是:根据形参 m的值 (2m9),在 m行 m列的二维数组中存放如下所示规律的数据,由 main函数输出。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include#include#define N 10int aMM=0; *found* void fun(intiia, int m)int j, k; f
5、or(j=0; j 三、综合应用题 3 编写函数 fun,其功能是:根据以下公式求 p的值,结果由函数值带回。 m与 n为两个正整数且要求 mn。 例如: m=12, n=8时,运行结果为495 000000。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #includefloat fun(int m, int n)main() *主函数 * void NONO(); printf(“P= f n“, fun(12, 8); NONO(); void NONO() *本函数用于打开文件
6、,输入数据,调用函数,输出数据,关闭文件。 * FILE * fP, *wf; int i, m,n; float s; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 国家二级 C+机试(操作题)模拟试卷 164答案与解析 一、基本操作题 1 【正确答案】 (1)NODE (2)next (3)r 【试题解析】 填空 1:本题考查了函数指针变量的函数返回值的类型,*fun(NODE*h)的返回值为 p,而 p的数据类型为 NODE,因此本空应该填写NODE。 填空 2:从此空的形式 p一 可知本空应该填写 next。
7、 填空 3:本题要求将不带头结点的单向链表逆置,为了使 q的指针向后移,此空应该填写 r。 二、简单应用题 2 【正确答案】 (1)void fun(int aM, int m) (2)ajk =(k+1)*(j+1); 【试题解析】 (1)在函数体 fun中可知, a是一个二维整型数组变量,设置实参时,用 *a表示是错误的,所以应改为 void fun(int aM, int m)。 (2)根据输出的结果可知,应改为 ajk: (k+1)*(j+1);。 三、综合应用题 3 【正确答案】 long jc(int m) long s=1; int i; for(i=1; i=m; i+)s=s*i return s; float fun(int m, int n) float p; p=1 0*jc(m) jc(n) jc(m n); return p; 【试题解析 】 本题考查算术运算的算法,先建立一个 jc函数来计算 m的阶乘,函数中使用一个 for循环来计算 m的阶乘,并将计算结果作为函数的返回值。在fun函数中调用 jc函数,来计算三个阶乘的除法。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1