二级C语言分类模拟题508.docx

上传人:b****6 文档编号:8545849 上传时间:2023-01-31 格式:DOCX 页数:15 大小:24.22KB
下载 相关 举报
二级C语言分类模拟题508.docx_第1页
第1页 / 共15页
二级C语言分类模拟题508.docx_第2页
第2页 / 共15页
二级C语言分类模拟题508.docx_第3页
第3页 / 共15页
二级C语言分类模拟题508.docx_第4页
第4页 / 共15页
二级C语言分类模拟题508.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

二级C语言分类模拟题508.docx

《二级C语言分类模拟题508.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题508.docx(15页珍藏版)》请在冰豆网上搜索。

二级C语言分类模拟题508.docx

二级C语言分类模拟题508

二级C语言分类模拟题508

(总分:

52.00,做题时间:

90分钟)

一、选择题(总题数:

35,分数:

52.00)

1.下列排序方法中,最坏情况下比较次数最少的是______。

(分数:

2.00)

 A.冒泡排序

 B.简单选择排序

 C.直接插入排序

 D.堆排序 √

解析:

[解析]冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n,因此本题答案为D。

2.以下选项中,能用作数据常量的是______。

(分数:

2.50)

 A.115L √

 B.0118

 C.1.5e1.5

 D.o115

解析:

[解析]A选项中115L表示115是长整型数据,合法。

B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,因此B选项错误。

C选项中e后面应该是整数,不能是小数(1.5),因此C选项错误。

D选项中八进制常量应该是数字“0”开始,而不是字母“o”开始。

故本题答案为A。

3.有以下程序:

#include<stdio.h>

main()

{inta=1,b=2;

for(;a<8;a++){b+=a;a+=2;}

printf("%d,%d/n",a,b);

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

(分数:

1.00)

 A.9,18

 B.8,11

 C.7,11

 D.10,14 √

解析:

[解析]第一次循环a的值为1,满足条件,执行b+=a与a+=2,则b的值变为3,a的值变为3。

执行a++,a的值为4,满足条件进入第二次循环,执行完循环体后b的值为7,a的值为6。

执行a++,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9。

执行++,a的值变为10,不满足条件,循环结束。

所以选择D选项。

4.输出语句:

printf("%d/n",11+011);的输出结果是______。

(分数:

1.00)

 A.20 √

 B.22

 C.022

 D.021

解析:

[解析]printf("%d/n",11+011),11为十进制,011为八进制形式,打印格式%d表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=81×1+1×80=9,相当于printf("%d/n",11+9),故答案为20,A选项正确。

5.设有如下定义:

struct{intn;charc;}a[2],*p=a;

则以下错误引用结构体成员n的是______。

(分数:

1.00)

 A.(*a)->n √

 B.a[0].n

 C.p->n

 D.(*p).n

解析:

[解析]若已定义了一个结构体变量和一个同一结构体类型的指针变量,并使该指针指向同类型的变量,则可用以下3种形式来引用结构体变量中的成员,其中结构体变量名也可以是已定义的结构体数组的数组元素:

结构体变量名.成员名;指针变量名->成员名;(*指针变量名).成员名。

题目中a为数组名是地址常量,不是指针变量,A选项引用错误。

a[0]为变量名,B选项引用正确。

p为指针,且正确的指向结构体变量,C选项引用正确。

D选项符合第三种引用方式,引用正确。

6.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j])

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

}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10),i;

sort(&a[1],7);

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

printf("%d,",a[i]);

}

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

(分数:

2.00)

 A.1,2,3,4,5,6,7,8,9,10,

 B.10,9,8,7,6,5,4,3,2,1,

 C.1,8,7,6,5,4,3,2,9,10, √

 D.1,2,10,9,8,7,6,5,4,3,

解析:

7.程序调试的任务是______。

(分数:

1.00)

 A.设计测试用例

 B.验证程序的正确性

 C.发现程序中的错误

 D.诊断和改正程序中的错误 √

解析:

[解析]程序调试的主要任务是改正程序中的错误,而软件测试是发现错误。

8.有以下程序:

#include<stdio.h>

main()

{

charch[]="uvwxyz",*pc;

pc=ch;

printf("%c/n",*(pc+5));

}

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

(分数:

1.00)

 A..z √

 B.0

 C.元素ch[5]的地址

 D.字符y的地址

解析:

[解析]语句pe=ch;使得指针变量指向字符数组ch的首地址,即指向字符"u"。

则pe+5指向的是字符向后移动5位,指向字符"z"。

所以输出的*pe+5的值即为"z"。

因此A选项正确。

9.对于基类型相同的两个指针变量之间,不能进行的运算是______。

(分数:

1.00)

 A.<

 B.=

 C.+ √

 D.-

解析:

10.有以下程序:

#include<stdio.h>

doublef(doublex);

main()

{doublea=0;

inti;

for(i=0;i<30;i+=10)a+=f((double)i);

printf("%3.0f/n",a);

}

doublef(doublex)

{returnx*x+1;}

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

(分数:

1.00)

 A.500

 B.401

 C.503 √

 D.1404

解析:

[解析]本题重点考察函数的定义和调用,第一次循环,a=0,i=0,返回值a=0*0+1+0=1;第二次循环,a=1,i=10,返回值a=10*10+1+1=102;第三次循环,a=102,i=20,返回值a=20*20+1+102=503;第四次循环,a=503,i=30,不符合i<30,跳出循环,最后结果输出a=503。

11.C语言中,下列不合法的字符常量是______。

(分数:

1.00)

 A."/xff"

 B."/65"

 C."&"

 D."/028" √

解析:

[解析]选项A,"/xff"中"/x"组合表示是一个十六进制数ffH=10进制的255,它代表一个不可见字符的ASCII码,合法。

选项B"/65"同理""十三个十进制数"/ddd"表示的是八进制数。

"/65"="/065"=10进制的53,是"F"的ASCII码表示。

选项C,单"&"字,合法。

选项D中"/028"同上表示是一个八进制数,但八进制数中逢八则进一,是不会出现8的,所以格式虽对但数值错了。

不合法。

12.有以下程序:

#include<stdio.h>

intfun(intx[],intn)

{staticintsum=0,i;

for(i=0;i<n;i++)sum+=x[i];

returnsum;

}

main()

{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;

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

}

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

(分数:

1.00)

 A.45

 B.50

 C.60 √

 D.55

解析:

[解析]函数fun的功能是求数组的n个元素之和。

fun(a,5)=15。

由于sum是静态局部变量,所以保持15不变,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

13.有两个关系R、S如下:

R

A

B

C

a

3

2

b

0

1

c

2

1

S

A

B

a

3

b

0

c

2

由关系R通过运算得到关系S,则所使用的运算为______。

(分数:

2.00)

 A.选择

 B.投影 √

 C.插入

 D.连接

解析:

[解析]投影运算是指对于关系内的域指定可引入新的运算。

本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。

所以选择B。

14.以下叙述中正确的是______。

(分数:

2.00)

 A.C语言程序将从源程序中第一个函数开始执行

 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

 C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 √

 D.main可作为用户标识符,用以命名任意一个函数作为主函数

解析:

[解析]main是主函数的函数名,表示这是一个主函数。

每一个C源程序都必须有且只能有一个主函数。

程序要从main函数开始执行,最后在main函数中结束。

本题选C。

15.若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是______。

(分数:

1.00)

 A.read(a,b,c);

 B.scanf("%d%d%d",a,b,c);

 C.scanf("%D%D%D",&a,%b,%c);

 D.scanf("%d%d%d",&a,&b,&c); √

解析:

[解析]scanf是键盘输入语句,%d是打印十进制文件,&x就是把你从键盘输入的值赋给X,后面依此类推,因此正确答案为D。

16.有以下程序:

#include<stdio.h>

voidf(intx[],intn)

{if(n>1)

{printf("%d,",x[0]);

f(&x[1],n-1);

printf("%d,",x[0]);

}

else

printf("%d,",x[0]);

}

main()

{intz[3]={4,5,6};

f(z,3);

printf("/n");

}

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

(分数:

1.00)

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

 B.4,5,6,5,4, √

 C.4,5,6,4,5,6,

 D.6,5,4,5,6,

解析:

[解析]本题考查了函数的递归调用,在main函数中调用f(z,3)后,系统进入f()函数,随后进入if语句,输出x[0];再进入f()函数时,存在&x[1]函数的递归,输出x[1];再进入f()函数,再进行递归,输出x[2];随后结束返回输出上一个f()函数,输出x[1];再返回第一个f()函数中,输出x[0],程序运行后的输出结果是4,5,6,5,4。

因此答案为B选项。

17.下面程序的输出结果为______。

#include<string.h>

main()

{

charP[17]="abc"="ABC".STR[50]="xyz";

strcpy(str,strcat(p1,p2));

printf(%s,str);

}

(分数:

2.00)

 A.xyzabcABC

 B.abcABC √

 C.xyzabc

 D.xyzABC

解析:

[解析]strcpy(strl,s1):

作用是将字符串s1拷贝到字符数组strl中去。

strcat(字符数组1,字符数组2):

把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。

本题定义了三个字符数组pl,p2,str,strcat(pl,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果放在字符数组p1中,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。

18.有以下程序:

#include<stdio.h>

main()

{

inta=1,b=2,c=3,x;

x=(a^b)&c;

printf("%d/n",x);

}

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

(分数:

1.00)

 A.3 √

 B.1

 C.2

 D.0

解析:

[解析]本题考查位运算符以及相关运算,^为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。

19.下列选项中,能正确定义数组的语句是______。

(分数:

1.00)

 A.intnum[0..2008];

 B.intnum[];

 C.intN=2008;intnum[N];

 D.#defineN2008intnum[N]; √

解析:

[解析]C语言不允许定义动态数组,定义数组的大小必须为常量表达式。

A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。

因此D选项正确。

20.下列合法的声明语句是______。

(分数:

1.00)

 A.int_abc=50; √

 B.doubleint=3+5e2.5;

 C.longdo=1L;

 D.float3_asd=3e-3;

解析:

[解析]标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。

B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。

C选项do是C语言的一个关键字。

D选项标识符只能以字母或下划线开始。

21.若有以下程序:

#include<stdio.h>

voidfun(float*a,float*b)

{floatw;

*a=*a+*a;w=*a;*a=*b;*b=w;

}

main()

{floatx=2..0,y=3.0,*px=&x,*py=&y;

fun(px,py);printf("%2.0f,%2.0f/n",x,y);

}

程序的输出结果是______。

(分数:

2.50)

 A.4,3

 B.2,3

 C.3,4 √

 D.3,2

解析:

[解析]#include<stdio.h>

voidfun(float*a,float*b)//a即指向px的指针,b即指向py的指针,则*a指向x,*b指向y

{

floatw;

*a=*a+*a;//将x地址存放的数据自加,x变为4

w=*a;

*a=*b;

*b=w;//将x和y地址里面的数据互换,则x变为3,y变为4

}

main()

{

floatx=2.0,y=3.0,*px=&x,*py=&y;//px和py分别是指向x和y地址的指针

fun(px,py);

printf("%2.0f,%2.0f/n",x,y);//%2.0f表示结果前面有2个空格,小数点后有0位,即保留到个位

}

22.以下程序调用fun函数求数组中最大值所在元素的下标:

#include<stdio.h>

voidfun(int*s,intn,int*k)

{inti;

for(i=0,*k=i;i<n;i++)

if(s[i]>s[*k])______;

}

main()

{inta[5]={1,6,2,8,0},k;

fun(a,5,&k);

printf("%d%d/n",k,a[k]);

}

在横线处应填入的内容是______。

(分数:

1.00)

 A.*k=i √

 B.k=i

 C.*k=i-s

 D.k=i-s

解析:

[解析]fun函数的功能是求数组中最大值所在元素的下标。

通过for循环语句,每次将最大的数给*k,即*k=i。

因此A选项正确。

23.以下叙述中正确的是

(分数:

1.00)

 A.C程序中注释部分可以出现在程序中任意合适的地方 √

 B.花括号“{”和“}”只能作为函数体的定界符

 C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

 D.分号是C语句之间的分隔符,不是语句的一部分

解析:

[解析]C语言函数、语句的概念、注释以及C程序的基本结构,“/*”与“*/”之间的信息称为注释信息,在C语言中,允许在任何能够插入空格符的位置插入注释,但C语言的注释不能进行嵌套;在C语言中,函数体是从花括号“{”开始,到花括号“}”结束。

但没有规定花括号“{”和“}”只能作为函数体定界符;选项C中前半句是正确的,在C程序中由有一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数比如库函数,主函数main()就不能由用户来命名;在C语言中明确规定每条语句以分号“;”结束,分号是语句不可缺少的一部分。

24.有三个关系R、S和T如下:

R

A

B

C

a

1

2

b

2

1

c

3

1

S

A

D

c

4

T

A

B

C

D

c

3

1

4

则由关系R和S得到关系T的操作是______。

(分数:

1.00)

 A.自然连接 √

 B..交

 C.投影

 D..并

解析:

[解析]自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据T中元组可以判断关系R和S做的是自然连接操作,答案为A。

25.若i、j已定义成int型,则下列程序段中内循环体的总执行次数是______。

for(i=6;i>0;i--)

for(j=0;j<4;j++){…}

(分数:

2.50)

 A.20

 B.24 √

 C.25

 D.30

解析:

[解析]本题考查for循环的使用。

对于第1个for循环,任何一个i,内层j的循环都要使j=0到3,j=4时不符合,所以退出j循环;然后i减1,j仍然要从0~3,j=4时退出j循环直到i变成0,退出i循环。

第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

26.设一棵树的度为3,共有27个结点,其中度为3,2,0的结点数分别为4,1,10。

该树中度为1的结点数为______。

(分数:

1.00)

 A.12 √

 B.13

 C.11

 D.不可能有这样的树

解析:

[解析]在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。

根据题意,度为3的树第1层1个根结点,第2层3个子结点,每个子结点下各3个子结点,所以第3层共9个子结点,前3层共13个结点。

第3层有一个结点度为2即有2个子结点,本层其他结点各1个子结点;即第4层共10个结点。

前4层共23个结点。

第4层中的两个结点下各有一个子结点,即第5层有2个结点,此2个结点下各有一个子结点。

第3层有8个度为1的结点,第4层有2个度为1的结点,第5层有2个度为1的结点,8+2+2=12。

故本题答案为A选项。

27.设有如下定义:

intarr[]={6,7,8,9,10};

int*ptr;

ptr=arr;

*(ptr2)=2;

printf("%d,%d/n",*ptr,*(ptr2));

则下列程序段的输出结果为______。

(分数:

2.50)

 A.8,10

 B.6,8

 C.7,9

 D.6,2 √

解析:

[解析]程序中ptr指针指向数组arr的首地址,*ptr=arr[0]=6,*(ptr2)=2,故选D。

28.有以下程序:

#include<stdio.h>

intm=13;

intfun2(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d/n",fun2(a,b)/m);

}

程序运行后的输出结果是

(分数:

1.00)

 A.1

 B.2 √

 C.7

 D.10

解析:

29.有以下程序

#include<stdio.h>

main()

{

inti,t[][3]={9,8,7,6,5,4,3,2,1};

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

printf("%d",t[2-i][i]);

}

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

(分数:

2.00)

 A.357 √

 B.753

 C.369

 D.751

解析:

[解析]本题考查的是for循环与二维数组的定义和引用。

当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第1行的第1个元素起,直到第1行满,接着代表第2行、第3行……的每一个元素。

程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循环中输出的数分别是:

t[2-0][0]、t[2-1][1]、t[2-2][2],即t[2][0]、t[1][1]、t[0][2],所以最后输出的结果为357。

故应该选择A。

30.以下叙述中错误的是______。

(分数:

1.00)

 A.只要类型相同,结构体变量之间可以整体赋值

 B.函数的返回值类型不能是结构体类型,只能是简单类型 √

 C.可以通过指针变量来访问结构体变量的任何成员

 D.函数可以返回指向结构体变量的指针

解析:

[解析]本题考查结构体相关知识。

函数返回值可以是结构体,所以B选项错误。

31.若有下列定义(设int类型变量占2个字节):

inti=8,j=9;

则下列语句:

printf("i=%%d,j=%%d/n",i,j);

输出的结果是______。

(分数:

2.50)

 A.i=8,j-9

 B.i=%d,j=%d √

 C.i=%8,j=%9

 D.8,9

解析:

[解析]本题考查函数的输出格式。

在printf函数中,格式说明符中有两个“%”,表示将第1个%后面的字符原样输出,并不输出其对应的变量值。

32.下列定义变量的语句中错误的是______。

(分数:

2.50)

 A.int_int;

 B.doubleint_;

 C.charFor;

 D.floatUS$; √

解析:

[解析]C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。

在C语言中大写字母和小写字母被认为是两个不同的字符。

选项A定义的变量标识符int和选项B定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。

选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。

33.以下选项中,能用作用户标识符的是______。

(分数:

1.00)

 A._0_ √

 B.8_8

 C.void

 D.unsigned

解析:

[解析]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1