计算机二级(C)37_真题(含答案与解析)-交互

计算机二级(C)37_真题(含答案与解析)-交互


2024年4月30日发(作者:)

计算机二级(C)37

(总分3040, 做题时间120分钟)

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

1.

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

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

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

C 以提示方式复制文件

D 显示COPY命令的帮助信息

分值: 60

答案:D

2.

若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是【 】。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A ++x,y=x--

B x+l=y

C x=x+10=x+y

D double(x)/10

分值: 60

答案:A

选项A)为C语言中的逗号表达式。赋值表达式的左侧不能是表达式。在进行强

制类型转换时,数据类型两边的圆括号不能省略。

3.

有以下程序

void f(int n,int* r)

{int rl=0;

if(n%3=0) rl=n/3;

else if(n%5=0) rl=n/5;

else f(n,&r1);

*r=rl;

}

main()

{int rn=7,r;

f(m,&);printf("%d",r);

}

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

SSS_SINGLE_SEL

A

B

C

D

2

1

3

0

分值: 60

答案:A

本题考查了函数的递归调用。在f函数中,当m=7时,程序执行"f(n,&r1);"语

句,递归调用f(6,&r1),程序执行"r1=n/3;"语句,即r1=6/3=2,然后执行",*

r=r1;"语句,所以输出结果为2。

4.

在DOS环境下,代表键盘和显示器的设备文件名为( )。

SSS_SINGLE_SEL

A PRN

B CON

C NUL

D LPT

分值: 60

答案:B

5.

有以下程序:

void fun(int *a,int i,int j)

{ int t;

if(i<j)

{ t=a[i];a[i]=a[j];a[j]=t;

i++; j--;

fun(a,i,j);

}

}

main( )

{ int x[ ]={2,6,1,8},i;

fun(x,0,3);

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

printf("n");

}

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

SSS_SINGLE_SEL

A 1 2 6 8

B 8 6 2 1

C 8 1 6 2

D 8 6 1 2

分值: 60

答案:C

6.

有以下程序:

struct STU

{char name[10];int num;float TotalScore;};

void f(struct STU *p)

{struct STU

s[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;

++p;++q; *p=*q;

}

main()

{struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};

f(s);

printf("%s%d%3.0fn",s[1].name,s[1].num,s[1].TotalScore);

}

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

SSS_SINGLE_SEL

A SunDan 20044 550

B Penghua 20045 537

C LiSiGuo 20042 580

D SunDan 20041 703

分值: 60

答案:B

本题将结构体数组s的首地址传递给了结构体指针变量p,并在函数f中改变了

指针变量p所指向的第二个结构体中的成员变量,这一改变,也就是改变了主函

数中s[1]的成员变量,故程序输出的值为Penghua 20045 537。

7.

有以下程序

main()

{int a=1,b=3,C=5,*P;

int *pl=&a,,*p2=&b,*p3=&c;

*P=*pl*(*p2);

printf("%d n",*P);

}

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

SSS_SINGLE_SEL

A 1

B 2

C 3

D 4

分值: 60

答案:C

程序使指针pl、p2、p3指向a、b、c值所存放的地址空间。然后再将指针变量

*pl、*p2运算所得的值放入指针变量*p,即放入了c值所存放的地址。则最后

输出c的时候得到的值就是c地址里面的值,即1*3:3。

8.

以下选项中不能作为合法常量的是【 】。

SSS_SINGLE_SEL

A 1.234e04

B 1.234e0.4

C 1.234e+4

D 1.234e0

分值: 60

答案:B

指数形式的实型常量要求字母e(或E)之前必需有数字,且e后面的指数必须为

整数,所以本题中选项B非法。

9.

以下选项中不能正确把c1定义成结构体变量的是( )。

SSS_SINGLE_SEL

A typedef struct

{ int red;

int green;

int blue;

} COLOR;

COLOR cl;

B struct color cl

{ int red;

int green;

int blue;

}

C struct color

{ int red;

int green;

int blue;

} cl;

D struct

{ int red;

int green;

int blue;

} cl;

分值: 60

答案:B

10.

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

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

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

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

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

分值: 60

答案:A

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

新的类型。

11.

SSS_SINGLE_SEL

有以下定义:

#include <stdio.h>

char a[10],*b=a;

不能给数组a输入字符串的语句是( )。

SSS_SINGLE_SEL

A gets(a)

B gets(a[0])

C gets(&a[0]);

D gets(b);

分值: 60

答案:B

12.

有以下程序:

main()

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

printf("%dn",*p+*q);

}

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

SSS_SINGLE_SEL

A 16

B 10

C 8

D 6

分值: 60

答案:B

数组a各元素a[0]~a[9]的值依次为1~10;在程序的说明部分,指针变量p初

始化为&a[3],即*p的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值

为6,所以*p+*q的值为10。

13.

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

A 算法的效率只与问题的规模有关,而与数据的存储结构无关

B 算法的时间复杂度是指执行算法所需要的计算工作量

C 数据的逻辑结构与存储结构是一一对应的

D 算法的时间复杂度与空间复杂度一定相关

分值: 60

答案:B

根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不

相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元

素之间关系的,是独立于计算机中的,数据的存储结构是研究数据元素和数据元

素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与

问题的规模有关,还与数据的存储结构有关。

14.

有以下程序:

SSS_SINGLE_SEL

main( )

{ int x[ ]={1,3,5,7,2,4,6,0},i,j,k;

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

for (j=2;j>=i;j--)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

for(j=4;j<7-i;j++)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

printf("n");

}

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

SSS_SINGLE_SEL

A 75310246

B 01234567

C 76310462

D 13570246

分值: 60

答案:A

15.

所谓 “裸机”是指( )。

SSS_SINGLE_SEL

A 单片机

B 单板机

C 不装备任何软件的计算机

D 只装备操作系统的计算机

分值: 60

答案:C

16.

设有如下程序段:

int x=2002, y=2003;

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

则以下叙述中正确的是( )。

A 输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B 运行时产生出错信息

C 输出值为2002

D 输出值为2003

分值: 60

答案:D

17.

有以下程序

SSS_SINGLE_SEL

int fun1(double a){return a*=a;}

int flun2(double X,double Y)

{double a=0,b=0;

a=funl(X);b=funl(Y);return(int)(a+b);

}

main()

{double W;w=fun2(1.1,2.0);……}

程序执行后变量W中的值是【 】。

SSS_SINGLE_SEL

A 5.21

B 5

C 5

D 0

分值: 60

答案:C

题中变量w的定义为double型,函数fun2()的定义为int型,按照各类数值型

数据间的混合运算,整型数据被转换为实型数据。

18.

有以下程序:

main( )

{ int m=3,n=4,x;

x=-m++;

x=x+8/++n;

printf("%dn",x);

}

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

SSS_SINGLE_SEL

A 3

B 5

C -1

D -2

分值: 60

答案:D

19.

以下程序中函数f( )的功能是将n个字符串按由大到小的顺序进行排序。

#include<string.h>

void f(char p[ ][10],int n)

{ char t[20]; int i,j;

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

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

if(strcmp(p [i] ,p[j] ) <0)

{ strcpy(t,p[i]);strcpy(p[i] ,p[j] );strcpy(p[j] ,t); } }

main ( )

{ char p [ ] [ 10 ] = { "abc","aabdfg","abbd","dcdbe", "cd" };

int i;

f(p,5); printf("%dn",strlen(p[O] ) );

}

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

SSS_SINGLE_SEL

A 6

B 4

C 3

D 5

分值: 60

答案:C

对字符串比较的方法是依次对两字符串对应位置上的字符两两比较,当出现第

一对不相同的字符 时,即由这两个字符(ASCII码值)决定所在串的大小。

20.

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

SSS_SINGLE_SEL

A void

B int

C float

D double

分值: 60

答案:B

21.

以下程序企图把从终端输入的字符输出到名为的文件中,直到从终端

读入字符#号时结束输入和输出操作,但程序有错。

#include <stdio.h>

main( )

{ FILE *fout; char ch;

fout=fopen('''',''w'');

ch=fgetc(stdin);

while(ch!=''#'')

{ fputc(ch,fout);

ch =fgetc(stdin);

}

fclose(fout);

}

出错的原因是( )。

A 函数fopen调用形式有误

B 输入文件没有关闭

C 函数fgetc调用形式有误

D 文件指针stdin没有定义

分值: 60

SSS_SINGLE_SEL

答案:A

22.

有以下程序

#include

#define N 5

#define M N+1

#define f(x) (x*M)

main()

{int i1,i2;

i1=f(2);

i2=f(1+1);

printf("%d%d\n",i1,i2);

}

程序的运行结果是【 】。

SSS_SINGLE_SEL

A 12 12

B 11 7

C 11 11

D 12 7

分值: 60

答案:B

根据宏替换的替换规则,我们可

知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。因此,本题的答案为选

项B。

23.

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

A 调用printf函数时,必须要有输出项

B 使用putchar函数时,必须在之前包含头文件stdio.h

C 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

分值: 60

答案:B

在使用标准输入输出库函数(除了Printf和scanf)前,必须要用预编译命令

"#include"将头文件"stdio.h"包括到用户源文件中。

24.

有以下程序段:

main( )

{ int a=5,*b,**c;

c=&b; b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是( )。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 变量a的地址

B 变量b中的值

C 变量a中的值

D 变量b的地址

分值: 60

答案:C

25.

有以下程序

main(int argc,char *argv[ ])

{ int n,i=0;

while(argv[1][i]!=''0'')

{ n=fun( ); i++;}

printf("%dn",n*argc);

}

int fun( )

{ static int s=0;

s+=1;

return s;

}

假设程序编译、连接后生成可执行文件,若键入以下命令 exam

123〈回车〉

则运行结果为( )。

SSS_SINGLE_SEL

A 6

B 8

C 3

D 4

分值: 60

答案:A

26.

有以下定义和语句:

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

p[0]=a[1];

则*p[0]+1)所代表的数组元素是( )。

SSS_SINGLE_SEL

A a[0][1]

B a[1][0]

C a[1][1]

D a[1][2]

分值: 60

答案:C

27.

若有以下说明和定义

typedefint * INTEGER;

INTEGER p,* q;

以下叙述正确的是( )。

SSS_SINGLE_SEL

A p是int型变量

B p是基类型为int的指针变量

C q是基类型为int的指针变量

D 程序中可用INTEGER代替int类型名

分值: 60

答案:B

语句typedef int * INTEGER;定义了一个新类型名INTEGER,因此语句

INTEGERp,* q;就相当 于int * p,* * q;。

28.

有以下程序

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

分值: 60

答案:C

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

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

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

29.

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

的三个连续结点。

struct node

{ int data;

struct node *next;

} *p, *q, *r;

现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错

误的程序段是( )。

SSS_SINGLE_SEL

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

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

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

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

分值: 60

答案:A

30.

以下不合法的字符常量是【 】。

SSS_SINGLE_SEL

A ’\018’

B ’\’

C ’\\’

D ’\xcc’

分值: 60

答案:A

字符常量是括在一对单引号内的字符。选项A)‘\018’是八进制字符串格式,

所以里面的数不能大于8。选项B、C、D都是转义字符。

31.

设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:

if(a<B)

if(c=D) y=0;

else y=1;

该语句所表示的含义是【 】。

SSS_SINGLE_SEL

A

B

C

D

分值: 60

答案:C

if语句中包含一个或多个if语句称为if语句的嵌套。在C语言中,从最内层

开始,else总是与它上面最近的 (未曾配对的)if配对。故本题中y=1的条件是

c≠d,又因为此if语句是前一个if语句的内层嵌套语句,所以在满足内层嵌套

的if语句之前,必须先满足外层的if语句中的条件表达式"a<b",所以选项C

是正确的。

32.

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

A 软件测试应该由程序开发者来完成

B 程序经调试后一般不需要再测试

C 软件维护只包括对程序代码的维护

SSS_SINGLE_SEL

D 以上三种说法都不对

分值: 60

答案:D

因为测试的目的在于发现错误,从心理学角度讲,由程序的编写者自己进行测试

是不合适的,为了达到最好的测试效果,应该由独立的第三方进行测试工作,所以

选项A错误;程序调试,修改一个错误的同时可能引入了新的错误,解决的办法

是在修改了错误之后,必须进行回归测试,所以选项B错误;所谓软件维护,就是

在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程,可

见选项C也是错误的。

33.

若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c

大于0)

s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是( )。

SSS_SINGLE_SEL

A s=a+b;

B s=a+c;

C s=s+c;

D s=b+c;

分值: 60

答案:B

34.

有以下程序:

main( )

{ int x=3, y=2, z=1;

printf("%dn",x/y&~z);

}

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

SSS_SINGLE_SEL

A 3

B 2

C 1

D 0

分值: 60

答案:D

35.

有以下程序

#include<stdio.h>

void WriteStr(char*fn,char*str)

{FILE*fp;

fp=fopen(fn"w");fputs(str,fp);fclose(fp);

}

main()


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714439710a2446800.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信