二级C语言笔试37.docx

上传人:b****1 文档编号:2869271 上传时间:2023-05-04 格式:DOCX 页数:25 大小:29.74KB
下载 相关 举报
二级C语言笔试37.docx_第1页
第1页 / 共25页
二级C语言笔试37.docx_第2页
第2页 / 共25页
二级C语言笔试37.docx_第3页
第3页 / 共25页
二级C语言笔试37.docx_第4页
第4页 / 共25页
二级C语言笔试37.docx_第5页
第5页 / 共25页
二级C语言笔试37.docx_第6页
第6页 / 共25页
二级C语言笔试37.docx_第7页
第7页 / 共25页
二级C语言笔试37.docx_第8页
第8页 / 共25页
二级C语言笔试37.docx_第9页
第9页 / 共25页
二级C语言笔试37.docx_第10页
第10页 / 共25页
二级C语言笔试37.docx_第11页
第11页 / 共25页
二级C语言笔试37.docx_第12页
第12页 / 共25页
二级C语言笔试37.docx_第13页
第13页 / 共25页
二级C语言笔试37.docx_第14页
第14页 / 共25页
二级C语言笔试37.docx_第15页
第15页 / 共25页
二级C语言笔试37.docx_第16页
第16页 / 共25页
二级C语言笔试37.docx_第17页
第17页 / 共25页
二级C语言笔试37.docx_第18页
第18页 / 共25页
二级C语言笔试37.docx_第19页
第19页 / 共25页
二级C语言笔试37.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

二级C语言笔试37.docx

《二级C语言笔试37.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试37.docx(25页珍藏版)》请在冰点文库上搜索。

二级C语言笔试37.docx

二级C语言笔试37

二级C语言笔试37

(总分:

86.00,做题时间:

90分钟)

一、{{B}}选择题{{/B}}(总题数:

50,分数:

50.00)

1.以下程序执行后sum的值是______。

main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d/n",sum);}

(分数:

1.00)

 A.15

 B.14

 C.不确定 √

 D.0

解析:

[评析]变量sum在使用时未赋初值,所以无法确定sum最终的值。

2.软件调试的目的是______。

(分数:

1.00)

 A.发现错误

 B.改正错误 √

 C.改善软件的性能

 D.挖掘软件的潜能

解析:

[评析]由程序调试的概念可知:

程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。

其二,对程序进行修改,排除这个错误。

所以程序调试的目的就是诊断和改正程序中的错误。

3.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是______。

(分数:

1.00)

 A.模拟现实世界中不同事物之间的联系

 B.强调模拟现实世界中的算法而不强调概念

 C.使用现实世界的概念抽象地思考问题从而自然地解决问题 √

 D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

解析:

[评析]面向对象的设计方法基本原理:

使用现实世界的概念抽象地思考问题从而自然地解决问题。

强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。

4.当调用函数时,实参是一个数组名,则向函数传送的是______。

(分数:

1.00)

 A.数组的长度

 B.数组的首地址 √

 C.数组每一个元素的地址

 D.数组每个元素中的值

解析:

[评析]当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:

①形参定义成数组;②形参定义成可变长数组:

⑧形参定义为指针变量。

5.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。

(分数:

1.00)

 A.free(;p->next=q->next;

 B.(*.next=(*.next;free(; √

 C.q=(*.next;(*.next=q;free(;

 D.q=q->next;p->next=q;p=p->next;free(:

解析:

[评析]选项A的错误在于,先已经把q结点给释放,无法再进行余下语句了;选项C和D的错误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的一个结点。

6.设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值为______。

(分数:

1.00)

 A.10101001

 B.10101000

 C.11111101

 D.01010101 √

解析:

[评析]异或运算符(^)的运算规则是:

参加运算的两个相应位同号,则结果为0(假);异号则为1(真)。

取反运算符(-)的运算规则是:

对一个二进制数按位取反,即将0变为1,1变为0。

本题(-3)是对3(二进制形式为00000011)按位取反即11111100。

表达式(2+x)^(-3)的值就等价于(00000010+10100111)^11111100,结果为01010101。

7.有以下程序:

main(){intx[8]={8,7,6,5,0,0},*s;S=x+3;printf("%d/n",s[2]);}程序运行后的输出结果是______。

(分数:

1.00)

 A.随机值

 B.0 √

 C.5

 D.6

解析:

[评析]本题定义了数组x[8]和指针变量s,由C语言规定,指针加1的含义是使指针指向数组的下一个元素,而不是指针值简单的加1,因此通过s=x+3;使s指向数组元素x[3]。

由于指向数据的指针变量可以带下标表示,如s[i]与*(s+i)等价。

因此题目要求输出s[2]的值,即*(s+2)的值,也就是x[5]的值,为0。

8.以下只有在使用时才为该类型变量分配内存的存储类说明是______。

(分数:

1.00)

 A.auto和static

 B.auto和register √

 C.register和static

 D.extern和register

解析:

[评析]extern、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程时都存在。

9.以下程序的输出结果是______。

longfum(intn){longs;if(n==||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld/n",fun(3));}

(分数:

1.00)

 A.1 √

 B.2

 C.3

 D.4

解析:

[评析]这是一个递归函数。

递归的结束条件是,n=1或者n=2。

按照程序顺序,即可得出本题结果为1。

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

(分数:

1.00)

 A.C语言编译时不检查语法

 B.C语言的子程序有过程和函数两种

 C.C语言的函数可以嵌套定义

 D.C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数 √

解析:

[评析]选项A的错误在于编译过程中是检查语法的,若发现源程序有语法错误,则系统会提示出错信息;选项B的错误在于C语言中,子程序的作用是由函数来完成的,无过程的概念;选项C的错误在于函数不可以嵌套定义,但可以嵌套调用。

11.有以下程序:

voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d/n",aa[0]);}程序运行后的输出结果是______。

(分数:

1.00)

 A.4

 B.3

 C.2

 D.1 √

解析:

[评析]C语言觌定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。

函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。

本题要求输出aa[0]的值,结果应为1。

12.以下所列的各函数首部中,正确的是______。

(分数:

1.00)

 A.voidplay(vara:

Integer,varb:

Intege

 B.voidplay(inta,

 C.voidplay(inta,int √

 D.Subplay(aasinteger,basintege

解析:

[评析]除选项C项外,其他各项都没有按照C语言中的函数定义规则定义函数。

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

voidfun(int*a,int*B){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x’&a,*y’&b;fun(x,y);printf("%d%d",a,B);}

(分数:

1.00)

 A.63

 B.36 √

 C.编译出错

 D.00

解析:

[评析]本题中主函数里的x、y,fun函数里的a/b/k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。

14.假设a和b为int型变量,则执行以下语句后,b的值为______。

a=1;b=10;do{b-=a;a++;}while(b--<0);

(分数:

1.00)

 A.9

 B.-2

 C.-1

 D.8 √

解析:

[评析]本题程序第一轮循环后b的值为9,在进行循环条件测试时,先取b的现值9与0比较,然后再将b减1。

由于9<0不成立,因此循环结束,这时b的值已变成8,本题正确答案为D。

15.若变量c为char类型,能正确判断出c为小写字母的表达式是______。

(分数:

1.00)

 A.'a'<=c<='z'

 B.(c>='a')||(c<='z')

 C.('a'<=and('z'>=

 D.(c>='a')&&(c<='z') √

解析:

[评析](c>='a')和(c<'z')的关系应该是“与”的关系。

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

fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,A);printf("%d",A);}

(分数:

1.00)

 A.0

 B.29

 C.31 √

 D.无定值

解析:

[评析]本题中,a的值并没有改变,因为传递到函数中的是变量值。

17.以下程序的输出结果是______。

main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(1+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d/n",k);}

(分数:

1.00)

 A.20

 B.21 √

 C.22

 D.23

解析:

[评析]按程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6;执行三次k+=p[i]*2,相当于k=5+0*2+2*2+6*2=21。

18.对于下面的程序#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));strcpy(string,scmp(string,str[2]));printf("%s/n",string);}若运行时依次输入abcd、abba和abc三个字符串,则输出结果为______。

(分数:

1.00)

 A.abcd

 B.abba √

 C.abc

 D.abca

解析:

[评析]本题自定义函数scmp()的作用是比较字符串s1和s2的大小,如果s1<s2,函数返回s1的值,否则返回s2的值。

若运行时依次输入abcd、abba和abc三个字符串,执行strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(stringstr[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

19.当执行下.面的程序时,其输出结果为______。

unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}

(分数:

1.00)

 A.1

 B.2

 C.3 √

 D.不确定

解析:

[评析]共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。

因此本题起作用的是成员b的值,所以程序打印输出3。

20.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf"/n");}假定以上程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROGABCDEFGHIJKL↓,则输出结果为______。

(分数:

1.00)

 A.ABCDEFG

 B.IJHL

 C.ABCDEFGHIJKL √

 D.IJKLABCDEFGH

解析:

[评析]本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。

当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。

Argc中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定argv[0]存放命令字字符串,argv[1]用来存放第一个参数的字符串,argv[2]用来存放第2个参数的字符串,依此类推。

题中argc的值是2,执行完-argc后为1,输出argv[1],此数组存在第一个参数的字符串ABCDEFGHIJKL。

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

voidfun(int*x,int*y){pnntf("%d%d",*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}

(分数:

1.00)

 A.2143 √

 B.1212

 C.1234

 D.2112

解析:

[评析]本题中函数传递的是变量的地址,如果形参在函数中发生改变,相刘应的实参也就有了改变。

22.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的______的过程,包括确定数据库在物理设备上的存储结构和存取方法。

(分数:

1.00)

 A.逻辑结构

 B.物理结构 √

 C.概念结构

 D.层次结构

解析:

[评析]根据数据库物理设计的概念可知:

为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。

数据库的物理结构就是指数据库在物理设备上的存储结构与存取方法。

23.在C语言中,引用数组元素时,其数组下标的数据类型允许是______。

(分数:

1.00)

 A.整型常量

 B.整型表达式

 C.整型常量或整型表达式 √

 D.任何类型的表达式

解析:

[评析]C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为数组名[下标],下标可以是整型常量或整型表达式。

24.设有以下声明语句streetex{intx;floaty;charz;}example;则下面的叙述中不正确的是______。

(分数:

1.00)

 A.struct是结构体类型的关键字

 B.example是结构体类型名 √

 C.x,y,z都是结构体成员名

 D.structex是结构体类型

解析:

[评析]example是结构体变量名。

25.按条件f对关系R进行选择,其关系代数表达式为______。

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[评析]选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。

这个关系是由R中那些满足逻辑条件的元组所组成。

如果关系的逻辑条件为f,则R满足f的选择运算可以写成σF(R)。

26.有以下程序段:

intk=0;while(k=1)k++;while循环执行的次数是______。

(分数:

1.00)

 A.无限次 √

 B.有语法错,不能执行

 C.一次也不执行

 D.执行1次

解析:

[评析]C语言里关系表达式的等于应该是“=”。

一个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=1的值总为1,while后面的表达式恒为真,当然会进入死循环。

27.下面的程序输出结果是______。

#definer16#ifr==16voidp(inta){printf("%x",a);}#elsevoidp(inta){printf("%d",a);}#endifmain(){p(32);}

(分数:

1.00)

 A.32

 B.20 √

 C.编译时错误

 D.运行时错误

解析:

[评析]“#definer16”的作用是指定用标识符r来代替16,因此程序编译时只编译#if部分,故程序运行时,打印输出十六进制的32,即20。

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

(分数:

1.00)

 A.N+1

 B.N √

 C.(N+1)/2

 D.N/2

解析:

[评析]在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。

解析:

[评析]“a>b?

(b>c?

1:

0):

0”的求解顺序是:

先判断a>b是否为真,如果为真,则执行b>c?

1:

0,如果b>c为真,则(b>c?

1:

0)的值为1,从而整个表达式返回1,否则整个表达式返回0;如果a仁b,则表达式返回0。

因此功能等价的语句应为if((a>b)&&(b>c)k=1;elsek=0;。

30.在下列选项中,______不是一个算法一般应该具有的基本特征。

(分数:

1.00)

 A.确定性

 B.可行性

 C.无穷性 √

 D.拥有足够的情报

解析:

[评析]一个算法,一般应具有以下几个基本特征:

①可行性②确定性③有穷性④拥有足够的情报。

31.当执行下面的程序时,如果输入ABC,则输出结果是______。

#include"stdio.h"#include"string.h"main(){charss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s/n",ss);}

(分数:

1.00)

 A.ABC6789 √

 B.ABC67

 C.12345ABC6

 D.ABC456789

解析:

[评析]strcat(strl,str2)合并字符串函数的作用是把str2所指字符串的内容连接到strl字符串的后面,自动删去strl原来串中的'0'。

为了进行这项操作,要求strl所指的字符串后面有足够的空间来容纳str2所指字符串中的内容。

函数值为strl所指第一个字符的地址。

32.在结构化方法中,软件功能分解属于软件开发中的______阶段。

(分数:

1.00)

 A.详细设计

 B.需求分析

 C.总体设计 √

 D.编程调试

解析:

[评析]总体设计过程通常由两个主要阶段组成:

系统设计,确定系统的具体实现方案;结构设计,确定软件结构。

为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。

33.有以下程序段:

intx=3;do{printf("%d",x-=2);}while(!

(--x));其输出结果是______。

(分数:

1.00)

 A.1

 B.30

 C.1-2 √

 D.死循环

解析:

[评析]本题中循环执行了两次,第一次,执行完printf语句后,x=1,而-x是先自减后执行语句,所以(!

(-x))的值为非零,所以又执行了一次。

第二次x的值为-2,-x的值为-3,求非后,值为0,跳出循环。

34.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是______。

(分数:

1.00)

 A.-3

 B.9

 C.-12 √

 D.6

解析:

[评析]C语言中对赋值运算的运算的运算顺序是自右向左。

本题中,计算a*a之后,a的值依然为3,表达式a*a的值为9;a-=9,a=3-9=-6:

a+=-6,a=-6+-6=-12。

35.以下程序的输出结果是______。

main(){intx=05;charz='a';printf("%d/n",(x&1)&&(z<'z'));}

(分数:

1.00)

 A.0

 B.1 √

 C.2

 D.3

解析:

[评析]“&”是位运算符表示按位与运算,“&&”是逻辑运算符当其两边的表达式都为真时返回真值。

关系表达式(x&1)&&(z<'z'),(x&1)为真,(z<'z')为真,两者相与,自然也为真,以整型输出,则输出1。

36.若有定义int*p[3]:

,则以下叙述中正确的是______。

(分数:

1.00)

 A.定义了一个基类型为int的指针变量p,该变量有三个指针

 B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 √

 C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

 D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

解析:

[评析]由于运算符[]优先级比*高,int*p[3];相当于int*(p[3]);,表示数组p的三个元素都是指针变量,且每个元素都是基类型为int的指针。

37.有以下程序:

main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f/n",a,c,f,x);}程序运行后的输出结果是______。

(分数:

1.00)

 A.16516.5

 B.1651.56.5 √

 C.1651.06.5

 D.2651.56.5

解析:

[评析]本题求解步骤如下:

先进行,"c*=(x=6.5)”的运算,由于x=6.5,表达式相当于c=c*6.5=10*6.5=65。

再进行"f/=65"的运算,相当于f=f/65=100.0/65,由于f为单精度实型变量,因此f的值约为1.538462。

然后进行'a=f'的运算,由于a为整型变量,因此a=1。

最后将各个变量的值按照printf中的格式要求输出到屏幕,注意变量f,x按照”%3.1f'格式输出,即只输出一位小数。

38.若执行以下程序时从键盘上输入9,则输出结果是______。

main(){intn;scanf("%d:

",&n);if(n++<10)printf("%d/n",n);elseprinf("%d/n",n--);}

(分数:

1.00)

 A.11

 B.10 √

 C.9

 D.8

解析:

[评析]n++是在语句结束后再加1,因此,if语句中相当于判断的是9<10,当然是执行if语句后面的printf语句,而这时,因为if语句被执行,n的值也被加1,所以在打印时,n值为10,而n-是在printf语句执行完毕后再减1的。

39.以下程序的输出结果是______。

#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k/m)/SQR(k+m);printf("%d/n",A);}

(分数:

1.00)

 A.16

 B.2 √

 C.9

 D.1

解析:

[评析]C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。

在做这题时,也不妨运用置换法。

得到a/=k+m*k+m/k+m*

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2