admin 管理员组

文章数量: 1184232


2024年12月31日发(作者:typealiases)

计算机二级(C)59

(总分100, 做题时间90分钟)

选择题(1-10题每题2分,11-50题每题1分,共60分)

1.

程序中头文件typel.h的内容是:

#define N 5

#define M1 N*3

程序如下:

#include"typel.h"

#define M2 N *2

main( )

{ int i;

i=M1+M2; printf("%dn",i);

}

程序编译后运行的输出结果是( )。

SSS_SINGLE_SEL

A 10

B 20

C 25

D 30

分值: 1

答案:C

2.

有以下程序

main( )

{ int a; char c=10;

float f=100.0; double x;

a=f/=c*=(x=6.5);

printf("%d %d %3.1f %3.1fn",a,c,f,x); }

程序运行后的输出结果是( )。

SSS_SINGLE_SEL

A 1 65 1 6.5

B 1 65 1.5 6.5

C 1 65 1.0 6.5

D 2 65 1.5 6.5

分值: 1

答案:B

3.

以下叙述中错误的是( )。

A 二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B 在程序结束时,应当用函数fclose( )关闭已打开的文件

SSS_SINGLE_SEL

C 在利用函数fread( )从二进制文件中读数据时,可以用数组名给数组中所

有元素读入数据

D 不可以用FILE定义指向二进制文件的文件指针

分值: 1

答案:D

4.

以下选项中合法的用户标识符是( )。

SSS_SINGLE_SEL

A long

B _2Test

C 3Dmax

D

分值: 1

答案:B

C语言中合法的变量名由字母、数字和下划线组成,且第一个字符必须为字母

或下划线。

5.

有以下程序:

void f(int*x,int*y)

{

int t;

t=*x;*x=*y;*y=t;

}

main()

{

int a [8]={1, 2,3,4,5, 6, 7,8},i,*p,*q;

p=a;q=&a[7];

while(p<q)

{f(p,q);p++;q-;}

for(i=0;i<8;i++)printf("%d,"a[i]);

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

A 823,4,5,6,7,1,

B 5,6,7,8,12,3,4,

C 1,2,3,4,5,6,7,8,

D 8,7,6,5,4,3,2,1,

分值: 1

答案:D

本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。

6.

设变量X和Y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息

的是【 】。

SSS_SINGLE_SEL

A if(X++);

B if(X>y&&y!=O);

C if(X>0)X

else Y++;

D if(Y<0){;}

else X++;

分值: 1

答案:C

C语言规定,在"if(表达式)语句1;else语句2;"这种形式的if语句中,在每

一个else前面有一个分号,整个语句结束处有一分号。在本题的C)选项

中,else前面少了一个分号,这样程序在编译时,会出现语法错误。

7.

能将高级语言编写的源程序转换为目标程序的是( )。

SSS_SINGLE_SEL

A 链接程序

B 解释程序

C 编译程序

D 编辑程序

分值: 1

答案:C

8.

有以下程序:

#include <string.h>

main()

{char p[]={''a'',''b'',''c''},q[10]={''a'',''b'',''c''};

printf("%d%dn",strlen(p),strlen(q));

}

以下叙述中正确的是【 】。

A 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为

3

B 由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

C 由于q数组中没有字符串结束符,长度不能确定:但p数组中字符长度为3

D 由于p和q数组中没有字符串结束符,故长度都不能确定

分值: 1

答案:B

strlen是计算以"0"结束的字符串的长度的函数,函数的值为字符串中实际长

度,不包括"0"。题中"q[10]={'a','b','c'}"虽然给出了数组大小,即数组实际

分配的存储空间,但此字符串只占用前3个存储弹元,其余存储单元系统自动加

上"0"故数组q的长度为3;由于p数组中没有字符串结束符,故字符串的长度

不自绷定。

9.

以下叙述中正确的是【 】。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A C语言中的文件是流式文件,因此只能顺序存取数据

B 打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆

C 在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能

读到第1个数据

D 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

分值: 1

答案:D

如果以写方式打开一个已经存在的文件,则在打开时将该文件删除,然后重新建

立一个同名的新文件。

10.

有以下程序

main( )

{ char s[ ]="n123 ";

printf("%d,%dn",strlen(s),sizeof(s));

}

执行后输出结果是( )。

SSS_SINGLE_SEL

A 赋初值的字符串有错

B 6,7

C 5,6

D 6,6

分值: 1

答案:C

11.

以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( )。

A if((a>b)&&(b>c)) k=1;

else k=0;

B if((a>b)||(b>c))

k=1 else k=0;

C if(a<=b) k=0;

else if(b<=c) k=1;

D if(a>b) k=1;

else if(b>c) k=1;

else k=0;

分值: 1

答案:A

12.

若有以下函数首部int fun(double X[10],int *n)则下面针对此函数的函数

声明语句中正确的是【 】。

A int fun(double X,int *n);

B int fun(double ,int);

SSS_SINGLE_SEL

SSS_SINGLE_SEL

C int fun(double * X,int n);

D int fun(double *int*);

分值: 1

答案:C

函数首部int fun(double x[10],int:n)表示这个函数的返回值是整型,其第

一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在C语

言中,一维数组的名字表示的是一维数组的地址,所以选项D)是正确的。

13.

下列描述中正确的是【 】。

SSS_SINGLE_SEL

A 程序就是软件

B 软件开发不受计算机系统的限制

C 软件既是逻辑实体,又是物理实体

D 软件是程序、数据与相关文档的集合

分值: 1

答案:D

计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相

关文档的完整集合。

14.

有以下程序:

main()

{ char a1=''M'',a2=''m'';

printf("%cn",(a1,a2));

}

以下叙述中正确的是【 】。

SSS_SINGLE_SEL

A 程序输出大写字母M

B 程序输出小写字母m

C 格式说明符不足,编译出错

D 程序运行时产生出错信息

分值: 1

答案:B

在逗号表达式(表达式1,表达式2)中,其运算方法是先求表达式1的值,然后求

表达式2的值,整个逗号表达式的值是表达式2的值。故本题输出的是a2的值

m。

15.

以下叙述中错误的是【 】。

A C语言是一种结构化程序设计语言

B 结构化程序由顺序、分支、循环三种基本结构组成

C 使用三种基本结构构成的程序只能解决简单问题

D 结构化程序设计提倡模块化的设计方法

分值: 1

答案:C

SSS_SINGLE_SEL

结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环3种结

构组成的编程方式。它强调程序设计风格和程序结构的规范化,提倡清晰的结

构。结构化程序设计方法的基本思路,是把一个复杂问题的求解过程分阶段进

行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化程序设

计提倡模块化的设计方法。

16.

C语言中用于结构化程序设计的三种基本结构是( )。

A 顺序结构、选择结构、循环结构

B if、switch、break

C for、while、do-while

D if、for、continue

分值: 1

答案:A

17.

以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平

均分并输出,程序如下:

main( )

{ int n,k;

float score,sum,ave;

sum=0.0;

for(n=1;n<=10;n++)

{ for(k=1;k<=4;k++)

{ scanf("%f",&score);sum+=score;}

ave=sum/4.0;

printf("NO%d:%fn",n,ave);

}

}

上述程序运行后结果不正确,调试中发现有―条语句出现在程序中的位置

不正确。这条语句是( )。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A sum=0.0;

B sum+=score;

C ave=sum/4.0;

D printf("NO%d:%fn",n,ave);

分值: 1

答案:A

本题中sum用来保存每位学生的总成绩,所以在计算不同学生的总成绩时,应

将sum重新赋值 初值0,即语句sum=0.0;,它应在第二个for语句前执行。

18.

有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不

为3的是( )。

SSS_SINGLE_SEL

A if (c<a) x=1;

else if (b<a) x=2;

else x=3;

B if (a<3) x=3;

else if (b<a) x=2;

else x=1;

C if (a<3) x=3;

if (a<2) x=2;

if (a<1) x=1;

D if (a<b) x=b;

if (b<c) x=c;

if (c<a) x=a;

分值: 1

答案:C

19.

有以下程序:

}

struct s

{ int x,y; } data[2]={10,100,20,200};}

main( )}

{ struct s *p=data;}

printf("%dn",++(p->x));}

程序运行后的输出结果是( )。

SSS_SINGLE_SEL

A 10

B 11

C 20

D 21

分值: 1

答案:B

20.

有以下程序

#include

main()

{FILE * fp;int k , n,a[6]={1,2,3,4, 5,6};

fp=fopen("","W");

fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d

\n",a[3],a[4],a[S]);

fclose(fp);

fp=fopen("","r");

fscanf(fp,"%d%d",&k,.&n);printf("%d%d\n",k,n);

fclose(fp);

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

A 12

B 14

C 1234

D 123456

分值: 1

答案:D

将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每

行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整

的数,而换行符则作为它们的分隔符。故本题答案为D)。

21.

若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是

【 】。

SSS_SINGLE_SEL

A #define N 10

B #define n 5int a[N]; int a[2*n];

C int a[5+5];

D int n=10,a[n].

分值: 1

答案:D

在选项D)中,n是一个整型的变量。C语言规定,在一维数组的定义中,其下标只

能是常量表达式,不能包含变量。

22.

在Windows环境下,单击当前窗口中的按钮“

A 将当前应用程序转为后台运行

B 退出Windows后再关机

C 终止当前应用程序的运行

D 退出Windows后重新启动计算机

分值: 1

答案:C

23.

DOS命令“COPY /?”的功能是( )。

A 将当前盘当前目录中的所有文件复制到当前盘的根目录下

B 将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下

C 以提示方式复制文件

D 显示COPY命令的帮助信息

分值: 1

答案:D

24.

用8位无符号二进制数能表示的最大十进制数为( )。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

SSS_SINGLE_SEL

”,其功能是( )。

A 127

B 128

C 255

D 256

分值: 1

答案:C

25.

有以下程序

#include

main()

{FILE * fp;int i,a[6]={l,2,3,4,5,6};

fp=fopen("","W+b");

fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)* 3,SEEK_SET);/*该语句使读文件的位置指针从

文件头向后移动3个int型数

据*/

fread(a,sizeof(int),3,fp);fclose(fp);

for(i=0;i<6;i++)printf("%d,",a[i]);

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

A 4,5,6,4,5,6,

B 1,2,3,4,5,6,

C 4,5,6,1,2,3,

D 6,5,4,3,2,1,

分值: 1

答案:A

首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是

读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向

的是文件中的第4个int数据"4"。然后fread函数将文件fp中的后3个数据

4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数

据就成了{4,5,6,4,5,6},故本题答案为A)。

26.

有以下程序

int fun(int X[],int n)

{static int sum=0,i;

for(i=0;i

return sum;

}

main()

{int a[]={1,2,3,4,5},b[]={6,7,8,9},S=0;

S=fun(a,5)+fun(b,4);printf("%d\n",S);

}

程序执行后的输出结果是【 】。

SSS_SINGLE_SEL

A 45

B 50

C 60

D 55

分值: 1

答案:C

内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再

次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是15,再次调用

后sum=15,所以Fun(b,4):45,s=45+15=60。

27.

以下对结构体类型变量td的定义中,错误的是【 】。

A virtual void vf()=0;

B void vf(int)=0;

C virtual int vf(int);

D virtual void vf(int) {}

分值: 1

答案:C

选项C中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,故此

种定义方法是错误的。

28.

有以下程序

maln()

{int a=0,b=0,C=0,d=0; .

if(a=1)b=1;c:2;

else d=3;

printf("%d,%d,%d,%d\n",a,b,C,d);

}

程序输出【 】。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 0,1,2,0

B 0,0,0,3

C 1,1,2,0

D 编译有错

分值: 1

答案:D

else子句不能作为语句单独使用,在题中if与else语句被"c=2;"语句分隔开

了。

29.

计算机网络的主要特点是( )。

SSS_SINGLE_SEL

A 运算速度快

B 运算精度高

C 资源共享

D 人机交互

分值: 1

答案:C

30.

以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是【 】。

SSS_SINGLE_SEL

A feof(fp)

B ftell(fp)

C fgetc(fp)

D rewind(fp)

分值: 1

答案:D

fseek函数用于改变文件的位置指针。本题中"fseek(fp,0L,SEEK_SET)"的作用

是将位置指针移到文件头。feof的作用判断文件是否结束,己指到文件的末尾,

则返回值为非零,否则为零。ftell的作用是得到流式文件中的当前位置,用相

对于文件开头的位移量来表示。fgets的作用是指定文件读入一个字符串。

31.

以下叙述中错误的是【 】。

A 可以通过typedef增加新的类型

B 可以用typedef将已存在的类型用一个新的名字来代表

C 用typedef定义新的类型名后,原有类型名仍有效

D 用typedef可以为各种类型起别名,但不能为变量起别名

分值: 1

答案:A

关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加

新的类型。

32.

在Windows环境下,当一个应用程序窗口被最小化后,该应用程序( )。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 继续在后台运行

B 继续在前台运行

C 终止运行

D 暂停运行

分值: 1

答案:A

33.

按照"后进先出"原则组织数据的数据结构是【 】。

SSS_SINGLE_SEL

A 队列

B 栈

C 双向链表

D 二叉树

分值: 1

答案:B

栈的特点是栈顶元素总是最后被插入的元素,也是最早被删除的元素;栈底元素

总是最早被插入的元素,也是最晚才能被删除的元素。即栈的修改原则是"后进

先出"(Last In First Out,简称LIFO)或"先进后出"(First In last Out,简称

FILO),因 此,栈也称为"后进先出"表或"先进后出"表。

34.

已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制

表示的字符常量''101''是( )。

SSS_SINGLE_SEL

A 字符A

B 字符a

C 字符e

D 非法的常量

分值: 1

答案:A

字符,'101',所对应的八进制数为101,转换成十进制数为65。

35.

有以下程序

main( )

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%dn",s[2]);

}

执行后输出结果是( )。

SSS_SINGLE_SEL

A 随机值

B 0

C 5

D 6

分值: 1

答案:B

36.

有以下程序

int *f(int *x,int *y)

{ if(*x<*y)

return x;

else

return y;

}

main( )

{ int a=7,b=8,*p,*q,*r;

p=&a; q=&b;

r=f(p,q);

printf("%d,%d,%dn",*p,*q,*r);

}

执行后输出结果是( )。

SSS_SINGLE_SEL

A 7,8,8

B 7,8,7

C 8,7,7

D 8,7,8

分值: 1

答案:B

37.

有以下程序

fun(int X,int Y){return(X+Y);}

main()

{int a=1,b=2,C=3,sum;

sum=fun((a++,b++,a+b),C++);

printf("%d\n",sum);

}

执行后的输出结果是【 】。

SSS_SINGLE_SEL

A 6

B 7

C 8

D 9

分值: 1

答案:C

变量a.b,c的初始值分别为1,2,3。因此逗号表达式"a++,b++,a+b"的值等于5,

表达式c++的值为3,这样主函数main()中调用子函数的表达式为"fun(5,3);

",其返回值等8。所以变量sum的值等于8。

38.

在Internet中,用于在计算机之间传输文件的协议是( )。

SSS_SINGLE_SEL

A TELNET

B BBS

C FTP

D WWW

分值: 1

答案:C

39.

已定义以下函数:

fun(char *p2, char *p1)

{ while((*p2=*p1)!=''0''){ p1++;p2++; } }

此函数的功能是( )。

A 将p1所指字符串复制到p2所指内存空间

SSS_SINGLE_SEL

B 将p1所指字符串的地址赋给指针p2

C 对p1和p2两个指针所指字符串进行比较

D 检查p1和p2两个指针所指字符串中是否有'0'

分值: 1

答案:A

40.

有以下程序:

main( )

{ int a[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++) p[i]=i+1;

printf("%d n",a[1][2]);

}

程序运行后的输出结果是( )。

SSS_SINGLE_SEL

A 3

B 6

C 9

D 2

分值: 1

答案:B

41.

以下语句中存在语法错误的是【 】。

A char SS[6][20]; SS[1]="right?";

B char SS[][20]={"right?"};

C char * ss[6];SS[1]="right?";

D char SS[]={"right?"};

分值: 1

答案:A

不能用赋值语句将一个字符串常量直接赋给一个字符串数组。

42.

若各选项中所用变量已正确定义,函数fun中通过return语句返回—个函数值,

以下选项中错误的程序是【 】。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

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){……}

分值: 1

答案:A

在调用子函数时,应对其进行说明。选项A)中,调用时,没有对子函数进行说

明。选项B)、C)中被调用函数在主调函数之前定义,不用说明;选项D)中在主

调函数中对被调用函数的返回值类型进行了说明。

43.

能将高级语言编写的源程序转换成目标程序的是( )。

SSS_SINGLE_SEL

A 编辑程序

B 编译程序

C 解释程序

D 链接程序

分值: 1

答案:B

由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标

程序”,而把源程序 转换成机器能够识别的目标程序是由“编译程序”完成

的。

44.

在16位编译系统上,若有定义int a[]={10,20,30},*P=&a;,当执行P++后,下

列说法错误的是【 】。

A p向高地址移了一个字节

B p向高地址移了一个存储单元

C p向高地址移了两个字节

D p与a+1等价

分值: 1

答案:A

在16位编译系统下,一个int型变量是用16位来存储的,其占用两个字节,当执

行p++之后,相当于p向高位移动了一个存储单元,也就是两个字节。因此,本题

的答案为选项A。

45.

以下叙述中错误的是【 】。

A 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B 数组名代表的是数组所占存储区的首地址,其值不可改变

C 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标

越界"的出错信息

D 可以通过赋初值的方式确定数组元素的个数

分值: 1

答案:C

在C语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出"

下标越界"的错误提示。

46.

SSS_SINGLE_SEL

SSS_SINGLE_SEL

设有如下说明

typedef struct ST

{long a;int b;char c[2];}NEW;

则下面叙述中正确的是【 】。

SSS_SINGLE_SEL

A 以上的说明形式非法

B ST是一个结构体类型

C NEW是一个结构体类型

D NEW是一个结构体变量

分值: 1

答案:C

typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有

用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,

相当于用NEW代表了struct ST这一结构体类型,故NEW为结构体类型。

47.

若有定义int x=0,*p=&x;,则语句printf("%dn",*p);的输出结果是

【 】。

SSS_SINGLE_SEL

A 随机值

B 0

C x的地址

D p的地址

分值: 1

答案:B

由题中定义可以看出,指针变量p指向了x所在的存储单元,故输出的*p的值即

为x的值0。

48.

在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为

【 】。

SSS_SINGLE_SEL

A 63

B 64

C 6

D 7

分值: 1

答案:B

顺序查找是从线性表的第一个元素开始依次向后查找,如果线性表中的第一个元

素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是

线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所

有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。

49.

有以下程序:

main( )

{ int m=0256,n=256;

printf("%o %on",mn,n);

}

程序运行后的输出结果是( )。

SSS_SINGLE_SEL

A 0256 0400

B 0256 256

C 256 400

D 400 400

分值: 1

答案:C

50.

数据库设计的根本目标是要解决

SSS_SINGLE_SEL

A 数据共享问题

B 数据安全问题

C 大量数据存储问题

D 简化数据维护

分值: 1

答案:A

由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数

据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减

少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不

一致性。因此,数据库设计的根本目标是要解决数据共享问题。

51.

有以下程序

main()

{int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i ,k,t;

for(i=0;i<3;i++)

for(k=i+1;k<4;k++)if(a[i][i]

a[i][i]=a[k][k];a[k][k]=t;}

for(i=0;i<4;i++)printf("%d,",a[0][i]);

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

A 6,2,1,1,

B 6,4,3,2,

C 1,1,2,6,

D 2,3,4,6,

分值: 1

答案:B

本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后

输出数组第一行的数据。故本题答案为B)。

52.

有以下程序

main( )

{ { int x=102,y=012; printf(“%2d,%2dn”,x,y);}

执行后输出结果是( )。

SSS_SINGLE_SEL

A 10,01

B 002,12

C 102,10

D 02,10

分值: 1

答案:C

53.

要求以下程序的功能是计算:s=1+1/2+1/3+…+…1/10

main( )

{ int n; float s;

s=1.0;

for(n=10;n>1;n--)

s=s+1/n;

printf("%6.4fn",s);

}

程序运行后输出结果错误,导致错误结果的程序行是( )。

SSS_SINGLE_SEL

A s=1.0;

B for(n=10;n>1;n--)

C s=s+1/n;

D printf("%6.4fn",s);

分值: 1

答案:C

54.

C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。

SSS_SINGLE_SEL

A void

B int

C float

D double

分值: 1

答案:B

55.

现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指向一个链表中

连续的三个结点。

struct node

{char data;

struct node*next;}*P,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此

操作的语句是【 】。

A q->next=r->next;p->next=r;r->next:q;

B P->next=r;q->next=r->next;r->next=q;

C q->next=r->next;r->next=q;P->next=r;

D r->next=q;p->next=r;q->next=r->next;

分值: 1

答案:D

r->next=q,这时r指向的节点为q;p->next=r,这时p指向的节点为r;

q->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以

不对。

56.

有以下程序

#include

main()

{char p[20]={′a′,′b′,′c′,′d′},q[]="abc",r[]:"abcde";

strcpy(P+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 209

B 99

C 2011

D 1111

分值: 1

答案:C

函数strlen()返回的是数组的实际长度,而sizeof返回的是数组定义的总长

度。因为字符数组p[20]定义为20字节长度,所以sizeof(p)的值为20。

"strcpy(p+strlen(q),r);"语句的功能把字符数组r拷贝到字符数组p从

p[3]开始到p[7]的位置中,这时字符数组p的有效字符长度为8。然后再执行

"streat(p,q);"语句(字符串连接),即把字符数组q连接到字符数组p后面,这

时字符数组p的有效长度为11。

57.

下列关于单目运算符++、--的叙述中正确的是( )。

A 它们的运算对象可以是任何变量和常量

B 它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C 它们的运算对象可以是int型变量,但不能是double型变量和float型变

D 它们的运算对象可以是char型变量、int型变量和float型变量

分值: 1

SSS_SINGLE_SEL

答案:D

58.

有以下程序

typedef struct{ int b,p;}A;

void f(A C)/* 注意:c是结构变量名 */

{int j;

c. b +=1;c.p+=2;

}

main()

{int i;

A a={1,2};

f(a);

printf("%d,%d\n",a.b,ap);

}

程序运行后的输出结果是【 】。

SSS_SINGLE_SEL

A 2,3

B 2,4

C 1,4

D 1,2

分值: 1

答案:D

本题考查的是函数调用时的数据传递问题。因为在调用函数f()时只是进行的

值传递,即单向传递,函数的调用及对形参的处理过程并不会引起实参数值的变

化。故本题答案为D)。

59.

下列程序的输出结果是( )。

main( )

{ int i,s=0;

for(i=1;i<10;i+=2) s+=i+1;

printf(“%dn”,s); }

SSS_SINGLE_SEL

A 自然数1~9的累加和

B 自然数1~10的累加和

C 自然数1~9中的奇数之和

D 自然数1~10中的偶数之和

分值: 1

答案:D

60.

有以下程序

void swap(char*X,char,*y)

{char t;

t=*X;*X=* Y;*Y=t;

}

main()

{char*s1="abc",*s2="123";

swap(s1,s2);printf("%S,%s\n",s1,s2);

}

程序执行后的输出结果是【 】。

SSS_SINGLE_SEL

A 123,abc

B abc,123

C 1bc,a23

D 321,cba

分值: 1

答案:C

这是一个转换程序:低字节相互转换,高字节不变。"abc"的ab和"123"的12相

互转化。

填空题(每空2分,共40分)

61.

某二叉树中度为2的结点有18个,则该二叉树中有【 】个叶子结点。

SSS_FILL

分值: 2

答案:19

二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为

2的结点多一个。本题中度为 2的结点数为18,故叶子结点数为18+1=19个。

62.

下面程序和运行运行结果是【 】。

void swap(int * a,int * b)

{ int * t;

t=a; a=b; b=t;

}

main( )

{ intx=3,y=5,* p=&x,* q=&y;

swap(p,q);

prinff("%d %dn", *p, *q);}

SSS_FILL

分值: 2

答案:3 5

本题swap( )函数的功能是实现两个数的交换,但它为无返回值型。

63.

以下程序中给指针p分配三个double型动态内存单元,请填空。

# include <stdlib.h>

main ( )

{ double *p;

p=(double *) malloc(【 】);

p[0]=1.5;p[1]=2.5;p[2]=3.5;

printf(“%f%f%fn”,p[0],p[1],p[2]); }

SSS_FILL

分值: 2

答案:sizeof(double)*3

64.

假设在当前盘的当前目录下有两个文件和,现要将文件合

并连接到文件的后面。若使用TYPE命令,则完整的命令为【 】。

SSS_FILL

分值: 2

答案:TYPE >>

65.

以下程序运行后的输出结果是【 】。

main()

{char c1,c2;

for(c1=''O'',c2=''9'';c1<c2;c1++,c2-) printf("%c%c",c1,c2);

printf("n");

}

SSS_FILL

分值: 2

答案:

本题程序的作用是通过for循环将0-9这10个数字从前向后,同时也从后向前

依次输出。

66.

已有文本文件,其中的内容为:Hello,everyone!。以下程序中,

文件已正确为“读”而打开,由此文件指针fr指向文件,则程序的

输出结果是【 】。

#include <stdio.h>

main( )

{ FILE *fr; char str[40];

......

fgets(str,5,fr);

printf("%sn",str);

fclose(fr);

}

SSS_FILL

分值: 2

答案:Hell

67.

以下程序的运行结果是【 】

#include <string.h>

typedef struct student{

char name[10];

long sno;

float score; }STU;

main( )

{ STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},

c={“Anhua”,2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0) d=b;

if(strcmp(,)>0) d=c;

printf(“%ld%sn”,,p->name); }

SSS_FILL

分值: 2

答案:2002ShangXian

68.

E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【 】。

SSS_FILL

分值: 2

答案:@

69.

以下程序的运行结果是【 】。

main()

{int a=2,b=7,c=5;

switch(a>O)

{case 1:switch(b<0)

{Case 1:printf("@");break;

Case 2:printf("!");break;

}

Case 0:switch(c==5)

{Case 0:printf("*");break;

Case 1:prinff("#");break;

case 2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

SSS_FILL

分值: 2

答案:#&

表达式"c==5"的值为真,所以表达式的值等于1,因此输出符号"#",然后执行

"break",继而去执行"default:printf("&");"语句,输出符号"&"。

70.

以下程序运行后的输出结果是【 】。

main( )

{ int i,m=0,n=0,k=0;

for(i=9; i<=11;i++)

switch(i/10)

{ case 0: m++;n++;break;

case 10: n++; break;

default: k++;n++;

}

printf("%d %d %dn",m,n,k);

}

SSS_FILL

分值: 2

答案:132

71.

若有以下程序

main( )

{ char a;

a=''H''-''A''+''0'';

printf("%cn",a);

}

执行后输出结果是【 】。

SSS_FILL

正确 错误

分值: 2

答案:未知

72.

以下sum函数的功能是计算下列级数之和。

请给函数中的各变量正确赋初值。

double sum( double x, int n )

{ int i; double a,b,s;

【 】

for( i=1;i<=n;i++=

{ a=a*x; b=b*i; s=s+a/b; }

return s; =

SSS_FILL

分值: 2

答案:a=1;b=1;s=1

73.

在数据库系统中,实现各种数据管理功能的核心软件称为【 】。

SSS_FILL

分值: 2

答案:数据库管理系统(DBMS)

数据库管理系统(Database Management System)简称DBMS,对数据库进行统一

的管理和控制,以保证数据库的安全性和完整性。它是数据库系统的核心软件。

74.

设函数findbig( )已定义为求3个数中的最大值。以下程序将利用函数指针

调用findbig函数。请填空。

main( )

{ int findbig(int,int,int);

int (*f)( ),x,y,z,big;

f=【 】;

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("big=%dn",big);

}

SSS_FILL

分值: 2

答案:findbig

75.

以下程序运行后的输出结果是【 】。

main( )

{ char a[ ]="123456789",*p; int i=0;

p=a;

while(*p)

{ if(i%2==0) *p=''*'';

p++;i++;

}

puts(a);

}

SSS_FILL

分值: 2

答案:*2*4*6*8*

76.

以下程序运行后的输出结果是【 】

main( )

{ int i,j,a[ ][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)

for(j=i+1;j<3;j++) a[j][i]=0;

for(i=0;i<3;i++)

{ for(j=0;j<3;j++) printf("%d ",a[i][j]);

printf("n");

}

}

SSS_FILL

分值: 2

答案:1 2 3

0 5 6

0 0 9

77.

有以下程序

#include <stdio.h>

main( )

{ char ch1,ch2; int n1,n2;

ch1=getchar( );

ch2=getchar( );

n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);

printf(“%dn”,n2);}

程序运行时输入:12<回车>,执行后输出结果是【 】。

SSS_FILL

分值: 2

答案:12

78.

以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填

空。

int fun( int n)

{ int m=0,f=1,i;

for(i=1; i<=n; i++)

{ m+=i*f;

f=【 】;

}

return m;

}

main( )

{ printf("m=%dn",【 】); }

SSS_FILL

分值: 2

答案:-f

答案:fun(10)

79.

计算机软件分为系统软件和应用软件,操作系统属于【 】。

SSS_FILL

分值: 2

答案:系统软件

计算机软件可分为系统软件和应用软件,操作系统属于系统软件。

80.

以下程序运行后的输出结果是【 】。

main( )

{ int x=10,y=20,t=0;

if(x= =y)t=x;x=y;y=t

printf("%d,%dn",x,y);

}

SSS_FILL

分值: 2

答案:20,0

1


本文标签: 文件 程序 数组 数据 输出