1、国家二级 C语言机试(操作题)模拟试卷 638及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序的主函数中,已给出由结构体构成的链表结点 a、 b、 c,各结点的数据域中均存入字符,函数 fun()的作用是:将 a、 b、 c三个结点链接成一个单向链表,并输出链表结点中的数据。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删 行,也不得更改程序的结构 ! 试题程序: #include stdi
2、o h typedef struct list char data; struct list*next; Q; void fun(Q*pa, Q*pb, Q*pc) Q*p; *found* pa- next=【 1】 ; pb- next=pc; p=pa; while(p) *found* printf(“ c“, 【 2】 ); *found* p=【 3】 ; printf(“ n“); main() Q a, b, c; a data=E; b data=F; c data=G; c next=NULL; fun(&a, &b, &c); 二、程序修改题 2 使用 VC+2010打开
3、考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量 a中的值原为 8, b中的值原为 3,程序运行后 a中的值为 3, b中的值为 8。 请改正程序中的错误,使它得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include conio h #include stdio h int fun(int*x, int y) int t; *found* t=x;
4、 x=y; *found* return(y); void main() int a=3, b=8; system(“CLS“); printf(“ d d n“, a, b); b=fun(&a, b); printf(“ d d n“, a, b); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,请编写函数 fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 x是数组名, n是 x中的数据个数, max存放最大值, i
5、ndex存放最大值所在元素的下标。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include time h #include stdlib h #include stdio h void fun(int; a, int n, int*max, int*d) void main() int i, x20, max, index, n=10; stand(unsigned)time(NULL); for(i=0; i =n; i+) xi=rand() 50; printf(“ 4d“, xi); *
6、输出一个随机数组 * printf(“ n“); fun(x, n, &max, &index); printf(“Nax= 5d, Index= 4d n“, max, index); 国家二级 C语言机试(操作题)模拟试卷 638答案与解析 一、程序填空题 1 【正确答案】 (1)pb (2)p- data (3)p- next 【试题解析】 填空 1:将三个结点连接起来,即将 pa的指针域指向 pb, pb的指针域指向 pc。 填空 2:输出链表结点中的数据,表示为 p- data。 填空 3:指针后移,指向下一个结点,即 p=p- next。 二、程序修改题 2 【正确答案】 (1)t
7、=*x; *x=y; (2)return(t);或 return t; 【试题解析】 首先,定义变量 t作为中间变量,然后进行数据交换,注意参数 x是指针变量,交换时应使用 *x,最后确定返回值;根据代码 b=fun(8a, b),可以知道返回值将赋给变量 b,而 b中应 存放交换前 *x中的值,所以函数应返回变量t。 三、程序设计题 3 【正确答案】 void fun(int a, int n, int*max, int*d) int i; *max=a0; *d=0; for(i=1; i n; i+) *将最大的元素放入指针 max所指的单元,最大元素的下标放入指针 d所指的单元 * if(*max ai) *max=ai; *d=i; 【试题解析】 查找最大值及其下标需要定义两个变量,该程序直接使用形参 max和 d,由于它们都是指针变量,所以在引 用它所指向的变量时要对它进行指针运算。循环语句用来遍历数组元素,条件语句用来判断该数组元素是否最大。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1