二级C语言127.docx

上传人:b****5 文档编号:8102274 上传时间:2023-01-28 格式:DOCX 页数:14 大小:23.37KB
下载 相关 举报
二级C语言127.docx_第1页
第1页 / 共14页
二级C语言127.docx_第2页
第2页 / 共14页
二级C语言127.docx_第3页
第3页 / 共14页
二级C语言127.docx_第4页
第4页 / 共14页
二级C语言127.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

二级C语言127.docx

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

二级C语言127.docx

二级C语言127

二级C语言-127

(总分:

100.00,做题时间:

90分钟)

一、选择题(总题数:

40,分数:

100.00)

1.设计软件结构是软件生命周期的______。

(分数:

2.50)

 A.软件定义期

 B.软件开发期 √

 C.软件维护期

 D.以上3个都不是

解析:

[解析]本题是对软件设计结构的考查。

设计软件结构是软件概要设计阶段进行的,而概要设计属于软件开发期。

2.下列关于栈的描述中错误的是______。

(分数:

2.50)

 A.栈是先进先出的线性表

 B.栈只能顺序存储 √

 C.栈具有记忆作用

 D.对栈的插入删除操作中,不需要改变栈底指针

解析:

[解析]栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都在栈顶进行,因此具有记忆作用。

栈可以采用顺序存储,也可以采用链式存储。

3.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为______。

(分数:

2.50)

 A.125

 B.n/2

 C.n √

 D.n+1

解析:

[解析]对长度为n的线性表进行顺序查找时,从表中的第一个元素开始,给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找完成。

在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素中的所有元素进行比较,因此比较次数为n。

4.以下选项中不合法的用户标识符是______。

(分数:

2.50)

 A.abc.c √

 B.file

 C.Main

 D.PRINTF

解析:

[解析]C语言规定标识符只能由字母、数字、下划线组成,并且只能由字母或下划线开头。

A中包含点符号,因此A选项不合法。

5.下列叙述中错误的是______。

(分数:

2.50)

 A.一种数据的逻辑结构可以有多种存储结构

 B.数据的存储结构与数据的处理效率无关 √

 C.数据的存储结构与数据的处理效率密切相关

 D.数据的存储结构在计算机中所占的空间不一定是连续的

解析:

[解析]数据的存储结构分顺序存储结构和链式存储结构,一个数据的逻辑结构可以有多种存储结构。

顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素通过指针就联系在一起了,所以所占的存储空间不一定是连续的。

6.下列工具中为需求分析常用工具的是______。

(分数:

2.50)

 A.PAD

 B.BFD

 C.N-S

 D.DFD √

解析:

[解析]需求分析常用的工具有4种:

数据流图(DFD)、数据字典(DD)、判断树和判定表。

PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

7.下列叙述中不正确的是______。

(分数:

2.50)

 A.在C语言中调用函数时,只能把实参的值传送给彤参,形参的值不能传送给实参

 B.在C的函数中,最好使用全局变量 √

 C.外部变量可以在函数之间传递数据

 D.自动变量实质上是一个函数内部的局部变量

解析:

[解析]在程序运行中局部变量所在的函数被调用时,编译系统根据需要临时分配内存,调用结束空间解放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。

在考虑内存未知的情况下,最好不要使用全局变量。

8.下列选项不符合良好程序设计风格的是______。

(分数:

2.50)

 A.源程序要文档化

 B.数据说明的次序要规范化

 C.避免滥用goto语句

 D.模块设计原则是高耦合、高内聚 √

解析:

[解析]在程序设计中,对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。

而goto语句破坏程序的结构,要尽量避免使用。

所以选项D不正确。

9.设有如下关系表:

R

A

B

C

1

1

2

2

2

3

S

A

B

C

3

1

3

T

A

B

C

1

1

2

2

2

3

3

1

3

则下列操作中正确的是______。

(分数:

2.50)

 A.T=R∩S

 B.T=R∪S √

 C.T=R×S

 D.T=R/S

解析:

[解析]关系代数中的集合运算分4种:

并、差、交和笛卡尔。

①并(∪);②差(-),R和S的差是由属于R但不属于S的元组构成的集合;③交(∩):

由既属于R又属于S的元组构成的集合;④笛卡尔积(×):

对两个关系R和S进行合并操作,产生的关系中元组个数为两个关系中元组个数之积。

根据关系T中的元组可知,T关系是关系R和关系S进行合并操作所得到的。

10.下列叙述中错误的是______。

(分数:

2.50)

 A.列表框和组合框都有List属性

 B.列表框有Selected属性,而组合框没有 √

 C.列表框和组合框都有Style属性

 D.组合框有Text属性,而列表框没有

解析:

[解析]组合框和列表框都没有Selected属性。

11.有下列程序:

main()

{intx=5;

do

{printf("%d",x-=4);}

while(!

(--x));

}

程序的输出结果是______。

(分数:

2.50)

 A.1

 B.20

 C.1-4 √

 D.死循环

解析:

[解析]本题考查do-while循环。

先执行do的内容,也就是printf语句,x=x-4=1,输出1,判断while循环的控制条件,--x=0,则!

(--x)为非零,循环条件成立,执行下一次循环;x=x-4=-4,输出-4,判断while循环的条件,--x=-5,则!

(--x)为零,循环条件不成立,结束循环。

12.若有下列定义,则______是对a数组元素地址的正确引用。

inta[5],*p=a;

(分数:

2.50)

 A.p+5

 B.*a+1

 C.&a+1

 D.&a[0] √

解析:

[解析]本题考查数组元素地址的引用。

选项A中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:

数组元素下标从0开始);选项B中,*a+1指的是将数组a的第1个元素加1;选项C中,不存在这种引用方式;选项D中,&a[0]引用的是数组的首地址。

13.设有定义语句:

chara="/72";,则变量a______。

(分数:

2.50)

 A.包含1个字符 √

 B.包含2个字符

 C.包含3个字符

 D.定义不合法

解析:

[解析]""是转义字符,但是"/72"表示ASCII码里的1个字符。

14.定义下列结构体(联合)数组:

structSt

{charname[15];

intage;

}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};

执行语句printf("%d,%c",a[2].age,*(a[3].name+2))的输出结果为______。

(分数:

2.50)

 A.15,A

 B.16,H

 C.16,A √

 D.17,H

解析:

[解析]本题考查结构体数组。

a[2].age为结构体a[2]的age成员,即a[3].name为指向结构体a[3]的name成员的第一个元素的指针,印指向“Z”,(a[3].name+2)将指针后移两位指向第三个元素“A”,*(a[3].name+2)是取指针所指向地址的内容。

15.若已定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0];

则能够正确表示数组元素a[1][2]的表达式是______。

(分数:

2.50)

 A.*((*prt+1)[2])

 B.*(*(p+5))

 C.(*prt+1)+2

 D.*(*(a+1)+2) √

解析:

[解析]A:

多了外层的*()。

B:

p是行地址,加5越界。

C:

少了外层的*()。

16.下列程序的输出结果是______。

char*point(char*pt);

main()

{charb[4]={"a","c","s","f"},*pt=b;

pt=point(pt);

printf("%c/n",*pt);

}

point(char*p)

{p+=3;

returnp;

}

(分数:

2.50)

 A.s

 B.c

 C.f √

 D.a

解析:

[解析]本题考查函数的调用及参数传递,当执行函数point时,刚开始指针p指向“a”,经过+3,指针p指向“f”,所以最后的输出结果是f。

17.下列选项中不会引起二义性的宏定义是______。

(分数:

2.50)

 A.#defineS(x)x*x

 B.#defineS(x)(x)*(x)

 C.#defineS(x).(x*x)

 D.#defineS(x)((x)*(x)) √

解析:

[解析]本题考查参数的宏替换。

为避免二义性有些参数表达式必须加括号,否则在实参表达式替换时,会出现错误。

例如x为(m+n)时替换A:

m+n*m+n,所以选项D最符合条件。

18.交换两个变量的值,不允许用临时变量,应该使用下列______位运算符。

(分数:

2.50)

 A.&

 B.^ √

 C.‖

 D.~

解析:

[解析]按逻辑位运算特点:

①用按位与运算将特定位清为0或保留特定位;②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

19.合法的C语言赋值语句是______。

(分数:

2.50)

 A.a=b=58

 B.k=int(a+b);

 C.a=58,b=58

 D.--1; √

解析:

[解析]赋值语句两个标志:

赋值(就是“=”)和语句(加上“;”)。

选项A,缺少分号,应该改为a=b=58;选项B,错误,类型转换不是这么写,应该是这样:

k=(int)(a+b);C选项中缺少分号;选项D,相当于i=i-1,所以也可以算作赋值操作。

20.有下列程序:

#include<stdio.h>

main()

{inta=6,b=7,m=1;

switch(a%2)

{case0:

m++;break;

case1:

m++;

switch(b%2)

{default:

m++;

case0:

m++;break;

}

}

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

}

程序的运行结果是______。

(分数:

2.50)

 A.3

 B.2 √

 C.4

 D.1

解析:

[解析]本题考查switch语句及break的用法。

第一个switch语句,因为a=6,a%2=0,所以执行“case0,m++;”,将m加1,遇到break语句跳出switch语句,结束循环。

不执行下面的switch。

21.有以下程序:

#include<strintg.h>

main()

{charp[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));

}

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

(分数:

2.50)

 A.209

 B.99

 C.2011 √

 D.1111

解析:

[解析]在主函数中,首先定义一个包含20个元素的字符数组p,执行语句“strcpy(p+strlen(q),r);”,数组p的内容变为{a,b,c,a,b,c,d,e,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0,/0},执行语句“strcat(p,q);”,数组p的内容变为{a,b,c,a,b,c,d,e,a,b,c,/0,/0,/0,/0,/0,/0,/0,/0,/0},函数sizeof(p)是求数组p的大小,返回20,而函数strlen(p)是计算以p所指起始地址的字符串的长度,这一长度不包括串尾的结束标志0,所以函数返回11。

22.若变量a、b、x、i都已正确定义并赋值,则以下符合C语言语法的表达式是______。

(分数:

2.50)

 A.a+=a-=(b=4)*(a=3) √

 B.x%(-3);

 C.a=a*3=2

 D.y=float(i)

解析:

[解析]取余运算符%两边都应是正数,赋值语句左边必须是变量,不能是表达式,强制转换语句强制类型应加括号,而非加在变量上。

23.设有定义:

“inta;floatb;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b的值分别是______。

(分数:

2.50)

 A.876和543.000000

 B.87和6.000000 √

 C.87和543.000000

 D.76和543.000000

解析:

[解析]本题考查scanf函数,输入格式符%2d%f表示只接收了字符,其中a输入的值为2位的十进制整数,即87,然后将紧接着的6赋给b,因为b的值为单精度数6,即6.000000,故选择B选项。

24.若有定义:

intc[4][5],(*cp)[5];和语句cp=c;,则能正确引用c数组元素的是______。

(分数:

2.50)

 A.cp+1

 B.*(cp+3)

 C.*(cp+1)+3

 D.*(*cp+2) √

解析:

[解析]cp是行指针,只表示行,若要表示元素,则需要配合列,A:

表示第二行;B:

表示第四行的内容,但是设指出那一列;C:

*(cp+1)+3只是地址不是元素值,需改为*(*(cp+1)+3)。

25.有以下程序:

main()

{intk=5;

while(--k)printf("%d",k-=3)j;

printf("/n");

}

执行后的输出结果是______。

(分数:

2.50)

 A.1 √

 B.2

 C.4

 D.死循环

解析:

[解析]当k=5时,while条件中的值为4,k为4,循环不成立,k-=3可写成k=k-3,输出1;接着执行--k后k为0,当k=0时,while循环不成立,退出。

26.当执行以下程序段时,______。

x=-1;

do{x=x*x;}while(!

x);

(分数:

2.50)

 A.循环体将执行一次 √

 B.循环体将执行两次

 C.循环体将执行无限次

 D.系统将提示有语法错误

解析:

[解析]do-while的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。

27.若有定义:

“int*p,x=0,*p,p=&x;”,则语句“printf("%d/n",*p);”的输出结果是______。

(分数:

2.50)

 A.随机值

 B.0 √

 C.x的地址

 D.p的地址

解析:

[解析]*p的意思是取其指向地址的内容,p是指向x地址的指针,因此输出*p也就是输出x的内容,即0,故选择B选项。

28.执行语句“for(i=1;i++<4;);”后,变量i的值是______。

(分数:

2.50)

 A.3

 B.4

 C.5 √

 D.不定

解析:

[解析]for循环结束时,i++的值应为4,i自加后此时应为5,故选择C选项。

29.下列程序的运行结果是______。

main()

{intx=1,y=3,a=0;

while(x++!

=(y-=1))

{a+=1;

if(y<x)break;

}

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

}

(分数:

2.50)

 A.2,3,2

 B.2,3,1

 C.1,3,3

 D.3,1,2 √

解析:

[解析]本题考查while循环。

第一次循环,y=y-1,y=2。

循环条件成立,x=1,x++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。

第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句,退出循环。

结果为D。

30.若有以下程序:

#include<stdio.h>

voidsub(doublex,double*y,double*z){*Y=*y-1.0;*z=*z+x;}

main()

(doublea=2.5,b=9.0,*pa,*pb;

pa=&a;pb=&b;

sub(b-a,pa,pa);printf("%f/n",a);

}

程序的输出结果是______。

(分数:

2.50)

 A.9.000000

 B.1.500000

 C.8.000000 √

 D.10.500000

解析:

[解析]从函数参数来看,x=b-a=6.5;y=z是指向a的指针pa,也就是说*y=*z=2.5;由于指针作为参数,可以将函数中计算得到的对指针引用的*y,*x作为最后计算得到的a的值,从函数语句看,类似做这样的运算,a=a-1.0;a=a+x;这里x=6.5于是计算得到,a=8;由于输出格式为浮点型,输出结果为8.0000000。

因此正确答案为C。

31.有以下程序:

#include<stdio.h>

main()

{intx=4,y;

do

{y=x;

if(!

y)printf("x");

else

printf("y");

x--;

}while(x);

}

程序的输出结果是______。

(分数:

2.50)

 A.xyyx

 B.yyyy √

 C.yyxx

 D.yxyx

解析:

[解析]本题考查do-while语句和if…else语句。

do-whiIe语句的功能是先执行循环体再判断条件,所以先判断if语句的条件,y=-4,!

y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=2,满足while循环条件,继续循环。

第三次循环:

先判断if语句的条件,y=2,!

y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=1,满足while循环条件,继续循环。

第四次循环:

先判断if语句的条件,y=-1,!

y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=0,不满足whik循环条件,结束循环。

所以选项B正确。

32.有以下程序:

#include<stdio.h>

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

else

i--;

}

i+=11;

a+=i;

}

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

}

程序的输出结果是______。

(分数:

2.50)

 A.62

 B.63

 C.33

 D.32 √

解析:

[解析]本题考查while循环。

当i<20时,进入while循环体,循环体内的for循环实现的功能是i%10==0,也就是说当i值为0或者10的倍数的时候,跳出循环,执行i+=11;a+=i;,若i值不是10的倍数,则一直执行for循环i--。

①判断i=0时,执行i+=11;a+=i;,i=11,a=11;②判断i=10时,跳出for循环,执行i+=11;a+=i;,i=21,a=32;③判断i=21>20,不符合题意,结束循环。

33.下面程序的运行结果是______。

#include<stdio.h>

voiddel(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!

="/0";i++)

{if(a[i]>="0"&&a[i]<="9")

{s[j]=a[i];

j++;

}

s[j]="/0";

}

}

main()

{char*s="aa89gggh";

del(s);

printf("/n%s",s);

}

(分数:

2.50)

 A.1

 B.2 √

 C.3

 D.4

解析:

[解析]本题中del(char*s)函数实现的功能是逐个读入s数组中的字符,如果遇到数字,则将数字存在s中,遇到非数字字符则跳过。

所以最后输出的应该是字符串s中所有数字的个数。

34.当输入为"hello?

"时,下面程序的执行结果是______。

#include<stdio.h>

main()

{charc;

c=getchar();

while(c!

="?

")

{putchar(c);break;

}

}

(分数:

2.50)

 A.Rvfsu

 B.h √

 C.?

 D.hello

解析:

[解析]本题考查getchar()函数与putchar()函数,通过getchar()函数读入字符,并通过putchar()函数将字符逐个输出,当用户输入“?

”时停止输出,且c是一个字符变量只占一个字节。

35.有以下程序,其中函数f的功能是将多个字符串按字典顺序排序______。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0)){t=p[i];p[i]=p[j];p[j]=t;}

}

main()

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

f(p,5);

printf("%d/n",strlen(p[1]));

}

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

(分数:

2.50)

 A.2

 B.3

 C.6

 D.4 √

解析:

[解析]函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排列。

在主函数main()中,调用f(p,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]={"aabdfg","abbd","abc","cd","dcdbe"},因此p[1]="abdb",strlen(p[1])=4。

36.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是______。

(分数:

2.50)

 A.int**q;

 B.int(*q)(); √

 C.int*q;

 D.i

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

当前位置:首页 > PPT模板 > 其它模板

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

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