1、国家计算机二级(C)85 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.有以下程序 fun(int X,int Y) static int m=0,i=2; i+=m+1; m=i+X+Y; return m; main() int j=1,m=1,k; k=fun(j,m);printf(“d,“,k); k=fun(j,m);printf(“dn“,k); 执行后的输出结果是【 】。 (分数:60.00)A.5,5B.5,11C.11,11D.11,52.以下函数的功能是:通过键盘输入数
2、据,为数组中的所有元素赋值。 #define N 10 void arrin(int xN) int i=0; while(iN) scanf(“%d“,_); 在下划线处应填入的是( )。 (分数:60.00)A.x+iB.i3;i+) j+=f(i); printf(“%d/n“,j); 程序运行后的输出结果是( )。 (分数:60.00)A.4B.3C.2D.14.有以下程序段: main( ) int a=5,*b,*c; c= b= 程序在执行了 c=b=语句后,表达式:*c 的值是( )。 (分数:60.00)A.变量 a的地址B.变量 b中的值C.变量 a中的值D.变量 b的地址
3、5.以下叙述中正确的是【 】。(分数:60.00)A.用 C程序实现的算法必须要有输入和输出操作B.用 C程序实现的算法可以没有输出但必须要输入C.用 C程序实现的算法可以没有输入但必须要有输出D.用 C程序实现的算法可以既没有输入也没有输出6.若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(“%X/n“,m); 执行后输出结果是( )。 (分数:60.00)A.0X0B.0x0C.0D.0XABC7.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是【 】。(分数:60.00)A.(!E=0)B.(E0 | E-10 printf(“%c
4、/n”,fun(fun(a,b),fun(b,c); 程序的执行结果是( )。 (分数:60.00)A.函数调用出错B.8C.9D.7 解析:32.有以下程序: main() int p8=11,12,13,14,15,16,17,18,i=0,j=0; while(i+7)if(pi%2)j+=Pi; printf(“%d/n“,j); 程序运行后的输出结果,是【 】。(分数:60.00)A.42B.45 C.56D.60解析:本程序的作用是求除 p0外的其他奇数的和。 33.以下关于逻辑运算符两侧运算对象的叙述中正确的是【 】。(分数:60.00)A.只能是整数 0或 1B.只能是整数 0
5、或非 0整数C.可以是结构体类型的数据D.可以是任意合法的表达式 解析:逻辑运算符两侧的运算对象可以是任意类型的数据。C 语言最终以非 0或 O来判定它 ffj属于“真“(用 l表示)或“假“(用 0表示)。34.有以下程序 main() int a 32=0,(* ptr 2,i,j; for(i=0;i2;i+)ptr=a+i;scanf(“%d“,ptr);pb+; for(i=0;i3;i+) for(j=0;j2;j+)printf(“%2d“,aij); printf(“/n“); 若运行时输入:123回车,则输出结果是【 】。(分数:60.00)A.产生错误信息B.10 C.12
6、D.10解析:二维数组 a,通过 a32=0将数组中的各个元素初始化为 0,指针变量 ptr,指向包含 2个元素的一维数组。a00=1,a10=2,故本题的输出选 B。 35.下列条件语句中,功能与其他语句不同的是( )。(分数:60.00)A.if(a)printf(“%d/n“,x); else printf(“%d/n“,y);B.if(a=0)printf(“%d/n“,y); else printf(“%d/n“,x);C.if (a!=0)printf(“%d/n“,x); else printf(“%d/n“,y);D.if(a=0)printf(“%d/n“,x); else
7、printf(“%d/n“,y); 解析:36.有以下程序 main( ) char a,b,c,*d; a=/; b=/xbc; c=/0xab; d=“/0127“; printf(“%c%c%c%c/n“,a,b,c,*d); 编译时出现错误,以下叙述中正确的是( )。 (分数:60.00)A.程序中只有 a=/;语句不正确B.b=/xbc;语句不正确C.d=“/0127“;语句不正确D.a=/;和 c=/0xab;语句都不正确 解析:37.设有定义 int k=1,m=2;float f=7;,则以下选项中错误的表达式是【 】。(分数:60.00)A.k=k=kB.k+C.k%int(
8、f) D.k=fm解析:强制类型转换的一般形式为: (类型名) (表达式),而选项 C中只给表达式加了括号,并没有绐类型名也加上括号,所以选项 C的表达式错误。 38.以下叙述中错误的是【 】。(分数:60.00)A.C语言中对二进制文件的访问速度比文本文件快B.C语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp:定义了一个名为 fp的文件指针 D.C语言中的文本文件以 ASCII码形式存储数据解析:FILE 是由系统定义的一个结构体类型,并用该类型来定义若干个 FILE类型的变量,以便存放若干个文件。所以用 FILE定义的变量必须是数组或指针,所以选项 C中的“FILE fp
9、;“改为“FILE*fp;“就对了。 39.若有定义:int *p3;,则以下叙述中正确的是( )。 (分数:60.00)A.定义了一个基类型为 int的指针变量 p,该变量具有三个指针B.定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int的指针 C.定义了一个名为*p 的整型数组,该数组含有三个 int类型元素D.定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int类型元素解析:40.有以下程序: #include stdio.h main() FILE *fp; int i,k,n; fp=fopen(“data.dat“,“w+“);for(i=1
10、;i6;i+) fprintf(fp,“%d “,i); if(i%3=0) fprintf(fp,“/n“); rewind(fp); fscanf(fp,“%d%d“, for(i=0;iA.2,4,3,9,12,12,11,11,18,9, B.3,4,2,7,9,8,6,5,11,10,C.2,3,1,6,8,7,5,4,10,9,D.1,2,3,6,8,7,5,4,10,9,解析:本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组 a实际向函数 f()传递的是该数组的地址,因此在函数 f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数 f()实现的功能是
11、将成员数组中的前 9个元素分别加上该元素的下标,作为新的元素。45.有如下程序: #include main( ) FILE *fp1; fp1=fopen(“f1.txt“,“w“); fprintf(fp1,“abc“); fclose(fp1); 若文本文件 f1.txt中原有内容为:good,则运行以上程序后文件 f1.txt中的内容为( )。 (分数:60.00)A.goodabcB.abcdC.abc D.abcgood解析:46.能将高级语言编写的源程序转换成目标程序的是( )。(分数:60.00)A.编辑程序B.编译程序 C.解释程序D.链接程序解析:由高级语言编写的程序称为“
12、源程序”,由二进制代码表示的程序称为“目标程序”,而把源程序 转换成机器能够识别的目标程序是由“编译程序”完成的。47.下列叙述中错误的是【 】。(分数:60.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持解析:数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上设计数据库的结构并建立数据库的过程;数据库技术的根本目标是要解决数据共享的问题;数据库需要操作系统的支持;数据的物理结构又称数据的存储结构,就是数据
13、元素在计算机存储器中的表示及其配置。数据的逻辑结构是指数据元素之间的逻辑关系,它是数据在用户或程序员面前表现的方式,在数据库系统中,数据的物理结构不一定与逻辑结构一致。48.所谓 “裸机”是指( )。(分数:60.00)A.单片机B.单板机C.不装备任何软件的计算机 D.只装备操作系统的计算机解析:49.在函数调用过程中,如果函数 funA调用了函数 funB,函数 funB又调用了函数 funA,则( )。(分数:60.00)A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用 解析:50.有以下定义和语句: int a32=1,2,3,
14、4,5,6,*p3; p0=a1; 则*p0+1)所代表的数组元素是( )。 (分数:60.00)A.a01B.a10C.a11 D.a12解析:二、填空题(每空 2分,共 40分)(总题数:12,分数:480.00)51.以下程序的功能是输入任意整数给 n后,输出 n行由大写字母 A开始构成的三角形 字符阵列图形。例如,输入整数 5时(注意:n 不得大于 10),程序运行结果如下: A B C D E F G H I J K L M N O 请填空完成该程序。 main1 int i,j,n;char ch=A; scanf(“d“,an); if(n=n;i+) for(j=1;J=n-i
15、+1;j+) printf(“2c“,ch); 2 ; 3 ; else printf(“n is too large!n“) printf(“n“); (分数:40.00)填空项 1:_ (正确答案:ch+)填空项 1:_ (正确答案:prinff(“n“))解析:ch 自身加 1,指向下一个字母(以 ASCII的顺序)。此程序语句的作用是换行。52. E-mail地址由域名和用户名两部分组成,它们之间用分隔,其中在后面的部分是 1。(分数:40.00)填空项 1:_ (正确答案:域名)解析:53.若有程序 main( ) int i,j; scanf(“i=%d,j=%d“, printf
16、(“i=%d,j=%d/n “,i,j); 要求给 i赋 10,给 j赋 20,则应该从键盘输入 1。 (分数:40.00)填空项 1:_ (正确答案:i=10,j=20)解析:54.深度为 5的满二叉树有 1 个叶子结点。(分数:40.00)填空项 1:_ (正确答案:16)解析:在满二叉树中,叶子结点数目的计算公式为 2(n-1),其中 n为树的深度。55.若整型变量 a和 b中的值分别为 7和 9,要求按以下格式输出 a和 b的值: a=7 b=9 请完成输出语句:printf(“ 1“,a,b); (分数:40.00)填空项 1:_ (正确答案:a=%d/nb=%d/n)解析:%d 表
17、示按十进制整型输出,“/n“表示回车换行。56.在 DOS环境下,代表键盘和显示器的设备文件名为 1。(分数:40.00)填空项 1:_ (正确答案:CON(或 CON:))解析:DOS 环境下,PRN 是打印机的设备文件名,CON 是键盘、鼠标和显示器的设备文件名。57.以下程序运行后的输出结果是 1 int a=5; fun(int b) static int a=10; a+=b+; printf(“%d “,a); main( ) int c=20; fun(c); a+=c+; printf(“%d/n“,a); (分数:40.00)填空项 1:_ (正确答案:30 25)解析:58
18、.以下程序中,函数 sumColumM 的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+ k=0; for(j=1;jM;j+ if(akiaji)k=j; s+= 1; 2=s; main( ) int xMN=3,2,5,1,4,1,8,3,s; SumColumMin( 3); printf(“%d/n“,s); (分数:40.00)填空项 1:_ (正确
19、答案:aki)解析:59.以下程序通过函数 sunFun求 (分数:40.00)填空项 1:_ (正确答案:x)解析:60.若 fp已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen 1;。 (分数:40.00)填空项 1:_ (正确答案:“dl.dat“,“rb“ 或“dldat“,“r+b“ 或“dl.dat“,“rb+“。)解析:61.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 1的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:40.00)填空项 1:_ (正确答案:驱动模块)解析:在进行测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块):其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。 62.按“先进后出“原则组织数据的数据结构是 1。(分数:40.00)填空项 1:_ (正确答案:栈)解析:栈是限定只在一端进行插入和删除操作的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。栈按照“先进后出“或“后进先出“的原则组织数据。