1、国家计算机二级(C)83 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.设有以下定义 int a=0; double b=1.25; char c=A; #define d 2 则下面语句中错误的是( )。 (分数:60.00)A.a+;B.b+;C.c+;D.d+;2.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是(分数:60.00)A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lE
2、DCBA3.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是【 】。(分数:60.00)A.while(ch=getchar()!=N)printf(“C“,ch);B.while(ch=getchar()!=N)printf(“C“,ch);C.while(ch=getchar()=N)printf(“C“,ch).D.while(ch=getchar()=N)printf(“C“,ch);4.程序中头文件 typel.h的内容是: #define N 5 #define M1 N*3 程序如下: #include“typel.h“ #de
3、fine M2 N *2 main( ) int i; i=M1+M2; printf(“%d/n“,i); 程序编译后运行的输出结果是( )。 (分数:60.00)A.10B.20C.25D.305.以下不合法的用户标识符是【 】。(分数:60.00)A.j2KEYB.DoubleC.4dD.86.计算机能直接执行的程序是(分数:60.00)A.源程序B.目标程序C.汇编程序D.可执行程序7.下列叙述中正确的是( )。(分数:60.00)A.在 Windows环境下,最大化的窗口是不能移动的B.在 Windows环境下,应用程序窗口最小化后,该应用程序暂停执行C.在 Windows环境下,只
4、有最小化的窗口才能关闭D.在 Windows环境下,不能关闭最小化窗口8.设有定义:long x= -123456L;,则以下能够正确输出变量 x值的语句是( )。(分数:60.00)A.printf(“x=%d/n“,x);B.printf(“x=%1d/n“,x);C.printf(“x=%8dL/n“,x);D.printf(“x=%LD/n“,x);9.若以下选项中的变量已正确定义,则正确的赋值语句是( )。(分数:60.00)A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3;10.下列选项中正确的语句组是( )。(分数:60.00)A.char s8; s
5、=“Beijing“;B.char s8; s=“Beijing“;C.char *s; s=“Beijing“;D.char *s; s=“Beijing“;11.程序中若有如下说明和定义语句 char fun(char*); main() char*s=“one“,a5=0,(*f1)()=fun,ch; . 以下选项中对函数 Fun的正确调用语句是【 】。(分数:60.00)A.(*f1)(a)B.*f1(*s);C.ch=*f1(s);12.有以下程序 #include main() char p20=a,b,c,d,q=“abc“,r=“abcde“; strcat(P,r);str
6、cpy(P+strlen(q),q); printf(“dn“,strlen(P); 程序运行后的输出结果是【 】。 (分数:60.00)A.9B.6C.11D.713.有以下程序 #include stdio.h main( ) printf(“%d/n“,NULL); 程序运行后的输出结果是( )。 (分数:60.00)A.0B.1C.-1D.NULL没定义,出错14.已定义以下函数 int fun(int*P) return*p;) fun 函数返回值是【 】。 (分数:60.00)A.不确定的值B.一个整数C.形参 P中存放的值D.形参 P的地址值15.数字字符 0的 ASC值为 48
7、,若有以下程序 main() char a=1,b=2; printf(“%c“,b+); printf (“%d/n“,b-a); 程序运行后的输出结果是【 】。(分数:60.00)A.32B.502C.22D.2,5016.若各选项中所用变量已正确定义,函数 fun中通过 return语句返回个函数值,以下选项中错误的程序是【 】。(分数:60.00)A.main() X=fun(2,10); float fun(int a,int b)B.float fun(int a,int b) main() X=fun(i,j);C.float fun(int,int); main() x=fun
8、(2,10); float fun(int a,int b)17.下列叙述中错误的是( )。(分数:60.00)A.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件18.有以下程序 main( ) int i=0,s=0; do if(i%2)i+;continue; i+; s+=i; while(i7); printf(“%d/n“,s); 执行后输出的结果是( )。 (分数:60.00)A.16B.12C.28D.2119.下列叙述中正确的是【 】。(分数:60.00)A
9、.每个 C程序文件中都必须要有一个 main()函数B.在 C程序中 main()函数的位置是固定的C.C程序中所有函数之间都可以:相互调用,与函数所处位置无关D.在 C程序的函数中不能定义另一个函数20.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、p、q 均已正确定义,并用于指向链表结点,指针变量 S总是作为头指针指向链表的第一个结点。 (分数:60.00)A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点21.以下选项中合法的实型常数是( )。(分数:60.00)A.5E2.0B.E-3C.0.2D.1.3E22.下列叙述中错误的是( )。(分数:60
10、.00)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#define MAX是合法的宏定义命令行D.C程序对预处理命令行的处理是在程序执行的过程中进行的23.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输出结果是( )。 (分数:60.00)A.产生语法错B.随机值C.AD.6524.有以下程序 main(int argc,char * argv) int n=0,i; flor(i=l;iA.12B.12345
11、C.12345678D.13625.设变量已正确定义,则以下能正确计算 f=n!的程序段是【 】。(分数:60.00)A.F=0: for(i=1;i=n;i+) f*=i;B.f=1; for(i=1;in;i+) f*=i;C.f=1; for(i=n;i1;i+)f*=i;D.f=-1; for(i=n;i=2;i-)f*=i;26.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )(分数:60.00)A.char s10=”abcdefg”;B.char t =”abcdefg”,*s=t;C.char s10;s=”abcdefg”;D.char s10;strcpy(
12、s,”abcdefg”);27.以下程序中函数 reverse( )的功能是将 a所指数组中的内容进行逆置。 void reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:60.00)A.22B.10C.34D.3028.以下叙述中错误的是【 】。(分数:60.
13、00)A.C语言中对二进制文件的访问速度比文本文件快B.C语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp:定义了一个名为 fp的文件指针D.C语言中的文本文件以 ASCII码形式存储数据29.设有定义 int a=2,b=3,c=4;,则以下选项中值为 0的表达式是【 】。(分数:60.00)A.(!a=1 for(i=1;i10;i+=2) s+=i+1; printf(“%d/n”,s); (分数:60.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中的奇数之和D.自然数 110 中的偶数之和33.有以下程序 int fun(int n)
14、if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“d“,,若要通过 scanf(“%d,%d“,语句使变量 x得到数值 11,变量 y得到数值 12,下面四组输入形式中,错误的是( )。(分数:60.00)A.11 12B.11, 12C.11,12D.11,1238.以下数组定义中错误的是【 】。(分数:60.00)A.int x 3:0;B.int x23=l,2,3,4,5,6;C.int X 3=l,2,3,4,5,6;D.int x23=l,2,3,4,5,6;39.在数据管理技术发展的三个阶段中,数据共享最好
15、的是(分数:60.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同40.若有定义:float x=1.5;int a=1,b=3,C=2;则正确的 switch语句是【 】。(分数:60.00)A.switch(x) case 1.0:printf(“*n“); case 2.0:prinff(“*n“);B.switch(int)x); case 1:printf(“*n“); case 2:printf(“*n“);C.switch(a+b) case 1:printf(“*n“); case 2+1:prinff(“*n“);D.switch(a+b) case
16、1:printf(“*n“); case c:printf(“*n“);41.下列叙述中正确的是【 】。(分数:60.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响42.有以下程序: main( ) int a33,*p,i; p= for(i=0;iA.3B.6C.9D.243.有以下程序 main() unsigned char a=2,b=4,c=5,d; d=ab;dB.int a 2=1,2,3,4;C
17、.int a22=1,2,3;D.int a2 =1,2,3,4;46.以下关于宏的叙述中正确的是(分数:60.00)A.宏名必须用大写字母表示B.宏定义必须位于源程序中所有语句之前C.宏替换没有数据类型限制D.宏调用比函数调用耗费时间47.以下选项中正确的定义语句是(分数:60.00)A.double a;b;B.double a=b=7;C.double a=7,b=7;D.double,a,b;48.以下符合 C语言语法的实型常量是( )。(分数:60.00)A.1.2B.3.14.159EC.0.0005D.E1549.有以下程序 #include main() FILE * fp;i
18、nt k , n,a6=1,2,3,4, 5,6; fp=fopen(“d2.dat“,“W“); fprintf(fp,“dddn“,a0,a1,a2);fprintf(fp,“dddn“,a3,a4,aS); fclose(fp); fp=fopen(“d2.dat“,“r“); fscanf(fp,“dd“, scanf(“%d“, do s+=1; a=a-2; while(a!=n); printf(“%d/n“,s); 若要使程序的输出值为 2,则应该从键盘给 n输入的值是( )。 (分数:60.00)A.-1B.-3C.-5D.0二、填空题(每空 2分,共 40分)(总题数:12
19、,分数:480.00)51.函数 strcmp1的功能是对两个字符串进行比较,当 s所指字符串和 t所指字符串相等时,返回值为0; 当 s所指字符串大于 t所指字符串时,返回值大于 0;当 s所指字符串小于 t所指字符串时,返回值小于 0(功能等同于库函数 strcmp2 ),请填空。 #include stdio.h int strcmp ( chat * s, char * t) while( * s * t * s= 3 s+;t+; return 4; ) (分数:40.00)填空项 1:_填空项 1:_52.若有以下程序 main( ) char a; a=H-A+0; printf
20、(“%c/n“,a); 执行后输出结果是 1。 (分数:40.00)填空项 1:_53.用十六进制给存储器中的字节地址进行编号,若地址编号从 0000到 FFFF,则该存储器的容量为 1KB。(分数:40.00)填空项 1:_54.以下程序运行后的输出结果是 1。 main( ) int x=15; while(x10 x填空项 1:_55.假设在当前盘当前目录下有一个可执行程序 USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件 OUT.DAT中,则完整的 DOS命令为 1。(分数:40.00)填空项 1:_56.执行以下程序后的输出结果是 1。
21、 main2 int a=10; a=(3*5,a+4);printf(“a=dn“,a); (分数:40.00)填空项 1:_57.设有定义语句:inta3=0,12;,则数组元素 a12的值是 1。(分数:40.00)填空项 1:_58.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:40.00)填空项 1:_59.以下程序运行后的输出结果是 1。 main( ) int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+; break; case 1:b+; break; case 2:a+;b+; break
22、; printf(“%d %d/n“,a,b); (分数:40.00)填空项 1:_60.当执行以下程序时,输入 1234567890,则其中 while循环体将执行 1 次。 #include main2 char ch; while(ch=getchar3)=0)prinff(“#“); (分数:40.00)填空项 1:_61.已有定义如下: struct node int data; struct node *next; *p; 以下语句调用 malloc函数,使指针 p指向一个具有 struct node类型的动态存储空间。请填空。 p = (struct node *)malloc(
23、 1); (分数:40.00)填空项 1:_62.设有说明 struct DATEintyear;intmonth;intday;请写出一条定义语句,该语句定义 d为上述结构体类型变量,并同时为其成员 year、month、day 依次赋初值 2006、10、1: 1。(分数:40.00)填空项 1:_国家计算机二级(C)83 答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.设有以下定义 int a=0; double b=1.25; char c=A; #define d 2 则下面语句中错误
24、的是( )。 (分数:60.00)A.a+;B.b+;C.c+;D.d+; 解析:2.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是(分数:60.00)A.12345ABCDEB.EDCBA54321 C.ABCDEl2345D.5432lEDCBA解析:栈的特点是先进后出,所以全部入栈后再全部出栈所得的序列顺序必然与入栈序列的顺序相反。3.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是【 】。(分数:60.00)A.while(ch=getchar()!=N)print
25、f(“C“,ch); B.while(ch=getchar()!=N)printf(“C“,ch);C.while(ch=getchar()=N)printf(“C“,ch).D.while(ch=getchar()=N)printf(“C“,ch);解析:while 语句的功能是:计算表达式的值,如为真,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为真,则重复执行循环体语句。直到表达式的值为假时,结束循环。ch=getchar()应加一个括号,表示输入字符的函数。4.程序中头文件 typel.h的内容是: #define N 5 #define M1 N*3 程序如下: #inclu
26、de“typel.h“ #define M2 N *2 main( ) int i; i=M1+M2; printf(“%d/n“,i); 程序编译后运行的输出结果是( )。 (分数:60.00)A.10B.20C.25 D.30解析:5.以下不合法的用户标识符是【 】。(分数:60.00)A.j2KEYB.DoubleC.4d D.8解析:C 语言规定,标志符由字母、数字或下划线组成,它的第一个字符必须是字母或下划线。6.计算机能直接执行的程序是(分数:60.00)A.源程序B.目标程序C.汇编程序D.可执行程序 解析:计算机能直接执行的只能是机器语言程序,源程序和汇编程序都是用高级语言编写
27、的程序,不能被直接执行。目标程序也是不能被直接执行的程序,需要通过系统提供的连接程序与库函数连接装配成可执行程序,也能被计算机执行。所以本题答案为 D)。7.下列叙述中正确的是( )。(分数:60.00)A.在 Windows环境下,最大化的窗口是不能移动的 B.在 Windows环境下,应用程序窗口最小化后,该应用程序暂停执行C.在 Windows环境下,只有最小化的窗口才能关闭D.在 Windows环境下,不能关闭最小化窗口解析:8.设有定义:long x= -123456L;,则以下能够正确输出变量 x值的语句是( )。(分数:60.00)A.printf(“x=%d/n“,x);B.p
28、rintf(“x=%1d/n“,x); C.printf(“x=%8dL/n“,x);D.printf(“x=%LD/n“,x);解析:在语言环境下,输出 long型数时,在%和 d之间必须加 1(L的小写);输出 double型数时,在% 和 f(e)之间也必须加 1。9.若以下选项中的变量已正确定义,则正确的赋值语句是( )。(分数:60.00)A.x1=26.8%3B.1+2=x2C.x3=0x12 D.x4=1+2=3;解析:10.下列选项中正确的语句组是( )。(分数:60.00)A.char s8; s=“Beijing“;B.char s8; s=“Beijing“;C.char
29、 *s; s=“Beijing“;D.char *s; s=“Beijing“; 解析:11.程序中若有如下说明和定义语句 char fun(char*); main() char*s=“one“,a5=0,(*f1)()=fun,ch; . 以下选项中对函数 Fun的正确调用语句是【 】。(分数:60.00)A.(*f1)(a) B.*f1(*s);C.ch=*f1(s);解析:题中将函数 fun的入口地址赋给了指针变量 f1,这时 f1和 fun都指向函数的开头,调用*f1 就是调用函数 fun。12.有以下程序 #include main() char p20=a,b,c,d,q=“ab
30、c“,r=“abcde“; strcat(P,r);strcpy(P+strlen(q),q); printf(“dn“,strlen(P); 程序运行后的输出结果是【 】。 (分数:60.00)A.9B.6 C.11D.7解析:strepy()函数的功能是将字符串 q复制到从 p3位置开始的存储单元,同时复制字符串结束标志0到 p6中。函数 strlen()返回的是字符串中不包括0在内的实际长度,故本题答案为 B)。13.有以下程序 #include stdio.h main( ) printf(“%d/n“,NULL); 程序运行后的输出结果是( )。 (分数:60.00)A.0 B.1C
31、.-1D.NULL没定义,出错解析:14.已定义以下函数 int fun(int*P) return*p;) fun 函数返回值是【 】。 (分数:60.00)A.不确定的值B.一个整数 C.形参 P中存放的值D.形参 P的地址值解析:返回值为指针变量指向的数据,该数据已被定义为整型。15.数字字符 0的 ASC值为 48,若有以下程序 main() char a=1,b=2; printf(“%c“,b+); printf (“%d/n“,b-a); 程序运行后的输出结果是【 】。(分数:60.00)A.32B.502C.22 D.2,50解析:执行语句“printf(“%c,“,b+);“
32、后,b 的值变成字符 3,执行“printf(“%d/n“,b-a);“,即3-1。 16.若各选项中所用变量已正确定义,函数 fun中通过 return语句返回个函数值,以下选项中错误的程序是【 】。(分数:60.00)A.main() X=fun(2,10); float fun(int a,int b) B.float fun(int a,int b) main() X=fun(i,j);C.float fun(int,int); main() x=fun(2,10); float fun(int a,int b)解析:在调用子函数时,应对其进行说明。选项 A)中,调用时,没有对子函数进
33、行说明。选项 B)、C)中被调用函数在主调函数之前定义,不用说明;选项 D)中在主调函数中对被调用函数的返回值类型进行了说明。 17.下列叙述中错误的是( )。(分数:60.00)A.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符 C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件解析:本题考查的是输入输出函数的使用,gets 和 getchar函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs 用于把字符串输出到文件,fwrite 用于以二进制形式输出数据到文件,故选项 B描述错误。18.有以下程序
34、 main( ) int i=0,s=0; do if(i%2)i+;continue; i+; s+=i; while(i7); printf(“%d/n“,s); 执行后输出的结果是( )。 (分数:60.00)A.16 B.12C.28D.21解析:19.下列叙述中正确的是【 】。(分数:60.00)A.每个 C程序文件中都必须要有一个 main()函数B.在 C程序中 main()函数的位置是固定的C.C程序中所有函数之间都可以:相互调用,与函数所处位置无关D.在 C程序的函数中不能定义另一个函数 解析:当一个程序只作为另一个程序的子程序的时候,那么该程序中可以没有主函数,它的位置不固
35、定,并且可以调用程序中的其他函数,而其他函数却不可以调用 main函数。函数中不可以再定义其他的函数。故本题的答案为选项 A)。20.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、p、q 均已正确定义,并用于指向链表结点,指针变量 S总是作为头指针指向链表的第一个结点。 (分数:60.00)A.首结点成为尾结点B.尾结点成为首结点 C.删除首结点D.删除尾结点解析:该程序段首先让 q指向链表的首结点,s 指向链表的第二结点 b,p此时指向 a结点。然后在循环中让 p指向链表的最后一个结点 c,并让结点 c指向 a结点,最终实现链表的尾结点成为首结点。21.以下选项中合法的实型
36、常数是( )。(分数:60.00)A.5E2.0B.E-3C.0.2 D.1.3E解析:本题主要考查指数形式的表示方法。C 语言规定字母 e(或 E)之前,必须要有数字,且其后的指 数,也必须为整数。22.下列叙述中错误的是( )。(分数:60.00)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#define MAX是合法的宏定义命令行 D.C程序对预处理命令行的处理是在程序执行的过程中进行的解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define 标识符字符
37、串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。23.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输出结果是( )。 (分数:60.00)A.产生语法错B.随机值C.A D.65解析:24.有以下程序 main(int argc,char * argv) int n=0,i; flor(i=l;iA.12B.12345C.12345678D.136 解析:运行时输入该命令后,参数 arge的值为 4,字符串数组 argv1、arg
38、v2、argv3分别为“12“、“345“、“678“,然后取这 3个参数的第一个字符,将其转化成原来的数字并组合成一个新的三位数。25.设变量已正确定义,则以下能正确计算 f=n!的程序段是【 】。(分数:60.00)A.F=0: for(i=1;i=n;i+) f*=i;B.f=1; for(i=1;in;i+) f*=i;C.f=1; for(i=n;i1;i+)f*=i;D.f=-1; for(i=n;i=2;i-)f*=i; 解析:n!=n*(n-1)*2*1,由于选项 A中 f的初值为 0,所以循环 n次后,f 值依然为 0,故选项 A错误:选项 B中循环的终止条件是“in“,即只
39、执行 i-1次循环,得到的 f值为(n-1)*2*1 的值,故选项 B错误;选项 C中,当 n1 时,由于初值“i=n“是符合条件“i1“的,且增量为+1,故循环中永远不会出现不满足条件“i1“的值,所以出现死循环。26.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )(分数:60.00)A.char s10=”abcdefg”;B.char t =”abcdefg”,*s=t;C.char s10;s=”abcdefg”; D.char s10;strcpy(s,”abcdefg”);解析:27.以下程序中函数 reverse( )的功能是将 a所指数组中的内容进行逆置。 v
40、oid reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:60.00)A.22 B.10C.34D.30解析:28.以下叙述中错误的是【 】。(分数:60.00)A.C语言中对二进制文件的访问速度比文本文件快B.C语言中,随机文件以二进制代码形式存储数据C.语
41、句 FILE fp:定义了一个名为 fp的文件指针 D.C语言中的文本文件以 ASCII码形式存储数据解析:FILE 是由系统定义的一个结构体类型,并用该类型来定义若干个 FILE类型的变量,以便存放若干个文件。所以用 FILE定义的变量必须是数组或指针,所以选项 C中的“FILE fp;“改为“FILE*fp;“就对了。 29.设有定义 int a=2,b=3,c=4;,则以下选项中值为 0的表达式是【 】。(分数:60.00)A.(!a=1 for(i=1;i10;i+=2) s+=i+1; printf(“%d/n”,s); (分数:60.00)A.自然数 19 的累加和B.自然数 11
42、0 的累加和C.自然数 19 中的奇数之和D.自然数 110 中的偶数之和 解析:33.有以下程序 int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“d“,,若要通过 scanf(“%d,%d“,语句使变量 x得到数值 11,变量 y得到数值 12,下面四组输入形式中,错误的是( )。(分数:60.00)A.11 12 B.11, 12C.11,12D.11,12解析:38.以下数组定义中错误的是【 】。(分数:60.00)A.int x 3:0;B.int x23=l,2,3,4,5,6;
43、 C.int X 3=l,2,3,4,5,6;D.int x23=l,2,3,4,5,6;解析:二维数组的初始化有以下几种形式:分行进行初始化。不分行的初始化。部分数组元素初始化。省略第一维的定义,不省略第二维的定义。选项 B等号右边分了 3行,大于等号左边数组的行数 2。39.在数据管理技术发展的三个阶段中,数据共享最好的是(分数:60.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:人工管理阶段:计算机出现的初期,主要用于科学计算,没有大容量的存储设备。处理方式只能是批处理,数据不共享,不同程序不能交换数据。文件系统阶段:即把有关的数据组织成一种文件,这种数
44、据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理。但是,数据文件仍高度依赖于其对应的程序,不能被多个程序所通用。数据库系统阶段:即对所有的数据实行统一规划管理,形成一个数据中心,构成一个数据仓库,数据库中的数据能够满足所有用户的不同要求,供不同用户共享。数据共享性显著增强。故本题答案为 C。40.若有定义:float x=1.5;int a=1,b=3,C=2;则正确的 switch语句是【 】。(分数:60.00)A.switch(x) case 1.0:printf(“*n“); case 2.0:prinff(“*n“);B.switch(int)x); case 1:
45、printf(“*n“); case 2:printf(“*n“);C.switch(a+b) case 1:printf(“*n“); case 2+1:prinff(“*n“); D.switch(a+b) case 1:printf(“*n“); case c:printf(“*n“);解析:C 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch 后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。41.下列叙述中正确的是【 】。(分数:60.00)A.一
46、个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。 42.有以下程序: main( ) int a33,*p,i; p= for(i=0;iA.3B.6 C.9D.2解析:43.有以下程序 main() unsigned char a=2,b=4,c=5,d; d=ab;dB.int a 2=1,2,3,4;C.int a22=1,2,