1、计算机二级(C)45 及答案解析(总分:3040.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.有以下程序 main() int Y=10; while(Y-);printf(“Y=dn“,Y); 程序执行后的输出结果是【 】。 (分数:60.00)A.Y=0B.Y=-1C.Y=1D.while 构成无限循环2. 有以下说明和定义语句: struct student int age; char num8; struct student stu3=20,“200401“,21,“200402“,10/9,“200403
2、“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )。 (分数:60.00)A.(p+)-numB.p-numC.(*p).numD.stu3.age3.以下与函数 fseek(fp,OL,SEEK_SET)有相同作用的是【 】。(分数:60.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)4.有以下程序 void fun2(char a,char b)printf(“cc“,a,b); char a=A,b=B; void fun1() a=C; b=D; main() fun1(); print
3、f(“cc“,a,b); fur2(E,F); 程序的运行结果是【 】。 (分数:60.00)A.C D E FB.A B E FC.A B C DD.C D A B5.能将高级语言编写的源程序转换成目标程序的是( )。(分数:60.00)A.编辑程序B.编译程序C.解释程序D.链接程序6.有以下程序 maln() int a=0,b=0,C=0,d=0; . if(a=1)b=1;c:2; else d=3; printf(“d,d,d,dn“,a,b,C,d); 程序输出【 】。 (分数:60.00)A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错7.已有定义:int i
4、,a10,*p;,则合法的赋值语句是( )。(分数:60.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;8.结构化程序由三种基本结构组成,三种基本结构组成的算法( )。(分数:60.00)A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务9.下面程序的功能是输出以下形式的金字塔图案是: * * * * * * * * * * * * * * * * main( ) int i,j; for(i=1;inext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; h
5、d=fun4;disp(hd);prinff(“n“); (分数:2.00)填空项 1:_61.以下程序运行后的输出结果是 1。 main( ) char a =“123456789“,*p; int i=0; p=a; while(*p) if(i%2=0) *p=*; p+;i+; puts(a); (分数:2.00)填空项 1:_62.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)4,int*); main1 int a 34=1,2,41,36,28,19,33,15,27,3,27,19,1,b3
6、,i; fun(3,4,a,b,); for(i=0;i3;1+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int*br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+)if(xarij)x=arij; 2=x; (分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 1。 main2 int x=0210; printf(“%X/n“,x); (分数:2.00)填空项 1:_64.按“先进后出“原则组织数据的数据结构是 1。(分数:2.00)填空项 1:
7、_65.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_66.以下程序的功能是输入任意整数给 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(nnumB.p-numC.(*p).numD.stu3.age 解析:3.以下与函数 fseek(fp,OL,SEEK_SET)有相同作用的是【 】。(分
8、数:60.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp) 解析:fseek 函数用于改变文件的位置指针。本题中“fseek(fp,0L,SEEK_SET)“的作用是将位置指针移到文件头。feof 的作用判断文件是否结束,己指到文件的末尾,则返回值为非零,否则为零。ftell 的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。fgets 的作用是指定文件读入一个字符串。 4.有以下程序 void fun2(char a,char b)printf(“cc“,a,b); char a=A,b=B; void fun1() a=C; b
9、=D; main() fun1(); printf(“cc“,a,b); fur2(E,F); 程序的运行结果是【 】。 (分数:60.00)A.C D E F B.A B E FC.A B C DD.C D A B解析:执行 fun1()后,变量 a、b 的值分别等于c、D,打印输出 CD,接着执行 fun2(E,F)语句,变量 a、b 的值变为E、F并输出。5.能将高级语言编写的源程序转换成目标程序的是( )。(分数:60.00)A.编辑程序B.编译程序 C.解释程序D.链接程序解析:由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而把源程序 转换成机器能够识别
10、的目标程序是由“编译程序”完成的。6.有以下程序 maln() int a=0,b=0,C=0,d=0; . if(a=1)b=1;c:2; else d=3; printf(“d,d,d,dn“,a,b,C,d); 程序输出【 】。 (分数:60.00)A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错 解析:else 子句不能作为语句单独使用,在题中 if 与 else 语句被“c=2;“语句分隔开了。7.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:60.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2; 解析:8.结构化程序
11、由三种基本结构组成,三种基本结构组成的算法( )。(分数:60.00)A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务 D.只能完成一些简单的任务解析:9.下面程序的功能是输出以下形式的金字塔图案是: * * * * * * * * * * * * * * * * main( ) int i,j; for(i=1;inext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:2.00)填空项 1:_ (正确答案:p!=NULL,p-next)
12、解析:NULL 的 ASCII 码的值和O的 ASCII 码的值相等,条件到 NULL 停止循环。把下一个节点的地址61.以下程序运行后的输出结果是 1。 main( ) char a =“123456789“,*p; int i=0; p=a; while(*p) if(i%2=0) *p=*; p+;i+; puts(a); (分数:2.00)填空项 1:_ (正确答案:*2*4*6*8*)解析:62.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)4,int*); main1 int a 34=1,2,
13、41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b,); for(i=0;i3;1+)printf(“%4d“,bi); printf(“/n“); void fun(int m,int n,int ar4,int*br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+)if(xarij)x=arij; 2=x; (分数:2.00)填空项 1:_ (正确答案:bri或*(br+i))解析:二维数组 a 存放 3 行:4 列的数组元素,一维数组 b 用于存放每行的最大数。在函数 fun 中,外层for
14、循环用于控制行数,内层 for 循环用于控制列数。 63.以下程序运行后的输出结果是 1。 main2 int x=0210; printf(“%X/n“,x); (分数:2.00)填空项 1:_ (正确答案:88)解析:由于八进制数以 0 开头,所以 0210 表示八进制数;“%X“的格式指以十六进制形式输出,输出十六进制的“a-f“时以大写字母输出。所以本题可以先将 0210 化为十进制,然后再化为十六进制。 64.按“先进后出“原则组织数据的数据结构是 1。(分数:2.00)填空项 1:_ (正确答案:栈)解析:栈是限定只在一端进行插入和删除操作的线性表,通常称插入、删除的这一端为栈顶,
15、另一端为栈底。栈按照“先进后出“或“后进先出“的原则组织数据。65.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_ (正确答案:关系)解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。 66.以下程序的功能是输入任意整数给 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=
16、n;i+) for(j=1;J=n-i+1;j+) printf(“2c“,ch); 2 ; 3 ; else printf(“n is too large!n“) printf(“n“); (分数:2.00)填空项 1:_ (正确答案:ch+)填空项 1:_ (正确答案:prinff(“n“))解析:ch 自身加 1,指向下一个字母(以 ASCII 的顺序)。此程序语句的作用是换行。67.已有文本文件 test.txt,其中的内容为:Hello,everyone!。以下程序中,文件 test.txt 已正确为“读”而打开,由此文件指针 fr 指向文件,则程序的输出结果是 1。 #includ
17、e stdio.h main( ) FILE *fr; char str40; fgets(str,5,fr); printf(“%s/n“,str); fclose(fr); (分数:2.00)填空项 1:_ (正确答案:Hell)解析:68.以下程序运行后的输出结果是 1。 main( ) int a 44=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18; int i=0,j=0,s=0; while(i+4) if(i=2|i=4) continue; j=0; do s+= aj; j+; while(j4); printf(“%d/n“,s); (分数
18、:2.00)填空项 1:_ (正确答案:92)解析:69.以下程序的输出结果是 1。 #include main2 char *sl,*s2,m; sl=s2=(char*)malloc(sizeof(char).*sl=15; *s2=20; m=*sl+*s2; printf(“dn“,m); (分数:2.00)填空项 1:_ (正确答案:40)解析:本题中指针 s1 和 s2 都指向同一个内存中的地址。因此语句“* s2=20;“执行后,*s1=* s2=20。所以 m 最后的值为 40。70.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_ (正确答案:逻辑)解析:所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构:而数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。而所谓循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列不需要存放元素之间的前后件关系,故它属于逻辑结构。