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

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

1、国家二级 C语言机试(操作题)模拟试卷 96及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是建立一个 NN的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为 1;从外向内第 2层元素的值全部为 2;第 3层元素的值全部为 3, 依次类推。 例如,若 N=5,生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #defitie

2、N 7 /*found*/ void fun(int(*a)_1 _) int i, j, k, m; if(N 2=0)m=N/2; else m=N/2+1; for(i=0; i #inolude void fun(int m, int k) int aa2 0, i ; for(i=0; m; i+) /*found*/ aai= m/k; m/=k; for(; i; i-) /*found*/ printf(“ d“, aai); main() int b, n; printf(“nPlease enter a number and a base: n“); s canf(“ d

3、d“, &n, &b); fun(n, b); printf(“n“); 三、程序设计题 3 编写一个函数,从 nllm个字符串叶 1找出最长的一个字符串,并通过形参指针max传回该串地址。 (注意:主函数中用 *作为结束输入的标志。 ) 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的化括号中填入你编写的若干语句。 #include #include void fun(char(*a)8 1, int num, char *max* main() char ss1081, *ps; void NONO(); int n, i: 0

4、 ; printi(“输入若干个字符串 “); gets(ssi); puts(s si); while(!strcmp(ssi, “*“)=0) i+; gets(s si); puts(ssi); ) n=i; fun(ss, n, &ps); printf(“inmax= sn“, ps); NONO(); void NONO() /*请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 */ char ss2081, *ps; int n, i=0; FILE*rf, *wf; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“

5、, “W“); fgets(ssi, 81, rf); while(!strncmp(ssi, “*, 4)=0) i+; fgets(S Si, 81, rf); n=i; fun(ss, n, &ps); fprintf(wf, “ S“, ps); fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 96答案与解析 一、程序填空题 1 【正确答案】 (1)N (2)I (3)i+1 【试题解析】 函数 fun的功能是按照指定的规律建立一个 NN的矩阵。 第一空:第一空处是补充函数定义,在主函数内 fun的调用形式是: fun(x), x是二维数组名,因

6、此 fun函数的参数是一个二维数组指针,故第一空处应为 “N”。 第二空: i等于 0时,此时第二空下的循环内 a0Ij=aN 1j=1,显然这 是对最外围的两列赋值为 1; i等于 1时,对外向内第 2列元素的值全部赋值为 2,依此类推,故第二空处 i的初值应为 “i”。 第三空: “aki=akNi-1=_3_; ”是对矩阵的两行进行操作,题干要求矩阵每一圈上的值都相等,故这里和上一个循环的列上的值相同,也为 “i+1”。 二、程序修改题 2 【正确答案】 (1)aai=m k; (2)printf(“ d“, aai一 1); 【试题解析】 函数的功能是将十进制正整数 m转换成 k(2k

7、9)进制数。 (1)第二 个标识下的 “aai=m/k; ”是进制的转换,应该是取余,所以第二个标识下“aaj=m/k; ”应该改为 “aai=m k; ”。 (2)数制转换处理过程中所得的结果,和实际要输出的结果顺序是相反的,所以必须对存放余数的数组反向输出。原题中 “printf(“ d“, aai); ”的下标有误。因为下标 i的起始值为 0,故反向输出时应该从 i-1开始,因此改为 “printf(“ d“,aai-1); ”。 三、程序设计题 3 【正确答案】 int i, k=0, maxlen; /*k为 a数组中最长串 所在元素的下标,初始为 0, msxlen为其串长 */ maxlen=strlen(ak); for(i=1; imaxlen) maxlen=strlen(ai); k=i; *max=ak; 【试题解析】 该程序功能是找出最长的一个字符串。解题思路,首先指定第一个字符串为长度最大的字符串,然后在循环过程中将其与其他的所有串的长度进行比较,求出最长的串。

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

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

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