二级C语言24.docx

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

二级C语言24.docx

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

二级C语言24.docx

二级C语言24

二级C语言-24

(总分:

76.50,做题时间:

90分钟)

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

35,分数:

48.00)

1.下面程序段的运行结果是{{U}}{{/U}}。

char*p="abcdefgh";

p+=3;

printf("%d/n",stfien(strcpy(p,"ABCD")));

∙A.8

∙B.12

∙C.4

∙D.7

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]p+=3使指针p指向字符"d",函数strcpy的功能是把后面的字符串复制到p指针指向的空间;strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的"/0"。

本题结果为4,即字符串“ABCD”的长度。

2.若函数中有定义语句:

inta;,则{{U}}{{/U}}。

∙A.系统将自动给a赋初值0

∙B.这时a中的值是和随机数

∙C.系统将自动给a赋初值-1

∙D.这a中无任何值

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查变量赋值基本概念。

在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。

3.用链表表示线性表的优点是

∙A.便于随机存取

∙B.花费的存储空间较顺序存储少

∙C.便于插入和删除操作

∙D.数据元素的物理顺序与逻辑顺序相同

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]链式存储结构克服了顺序存储结构的缺点:

它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。

故链式存储结构下的线性表便于插入和删除操作。

4.以下程序的输出结果是{{U}}{{/U}}

#include<stdio.h>

main()

{inti=0,a=0;

while(i<20)

{for(;;){if((i%10)==0)break;elsei--;}

i+=11;a+=i;

}

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

}

∙A.21

∙B.32

∙C.33

∙D.11

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

5.下列程序执行后的输出结果是{{U}}{{/U}}。

main()

{charx=0xFFFF;printf("%d/n",x--);}

∙A.-32767

∙B.FFFE

∙C.-1

∙D.-32768

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]因为x=0xFFFF=11111111,因此当以整型形式输出时对应的数为-1。

6.有以下程序

#include<stdio.h>

main()

{inti,j,m=1;

for{i=i;i<3;i++)

{for(j=3;j>0;j--)

{if(i*j>3)break;

m*=i*j;

}

}

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

}

程序运行后的输出结果是

∙A.m=6

∙B.m=2

∙C.m=4

∙D.m=5

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]第一次循环i=1,j=3和j=2时都能执行m*=i*j,此时得到m的值为6;然后进行第二次循环i=2,j=3时会执行break语句,内部循环直接结束,此时i再加1,也会导致退出外部循环,所以最终结果m的值为6。

7.下面的程序执行后,文件test.t中内容是______。

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");fun("test.t","hello,");}

∙A.hello,

∙B.newworldhello

∙C.newworld

∙D.hello,rld

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

8.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。

#include<stdio.h>

main()

{inti=0,j,k;

do{i++;k=316-13*i}while(______);

j=k/11;printf("316=13*%d+11,%d”,i,j);

}

∙A.k/11

∙B.k%11

∙C.k/11==0

∙D.k%11==0

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题的关键是两个加数分别能被13和11整除。

当k%11的值为0时,则退出循环,将执行j=k/11;语句,输出结果,所以该表达式合理的条件是k%11。

9.软件开发的结构化生命周期方法将软件生命周期划分成{{U}}{{/U}}

∙A.定义、开发、运行维护

∙B.设计阶段、编程阶段、测试阶段

∙C.总体设计、详细设计、编程调试

∙D.需求分析、功能定义、系统设计

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

10.若已定义x和y为double类型,则表达式x=1,y=x+5/2的值是

∙A.2

∙B.3.0

∙C.3

∙D.3.5

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]题目中定义变量x和y为双精度double类型,根据给定算数表达式的优先级应先计算5/2,结果为2,将值代入后,y的值由x和y的数据类型得出结果为3.0,整个逗号表达式的值为后y=x+5/2的值,即3.0。

11.以下描述中正确的是

∙A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

∙B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

∙C.在do-while循环体中,是先执行一次循环,再进行判断

∙D.do-while循环中,根据情况可以省略while

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]dowhile语句的一般形式为:

do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。

while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

12.有下列程序:

#include<stdio.h>

main()

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

switch(a%2)

{case0:

m++;break;

case1:

m++;

switch(b%2)

{defaut:

m++;

case0:

m++;break;

}

}

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

}

程序运行后的输出结果是{{U}}{{/U}}。

∙A.1

∙B.2

∙C.3

∙D.4

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查switch语句。

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

13.在深度为7的满二叉树中,叶子结点的个数为

∙A.32

∙B.31

∙C.64

∙D.63

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]在二叉树的第k层上,最多有2k-1(k≥1)个结点。

对于满二叉树来说,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。

因此,在深度为7的满二叉树中,所有叶子结点在第7层上,即其结点数为2k-1=27-1=64。

14.下列描述中正确的是

∙A.程序就是软件

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

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

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

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。

选项D的描述正确。

15.下列叙述中错误的是{{U}}{{/U}}。

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

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

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

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

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

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

顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。

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

16.有以下结构体说明、变量定义和赋值语句:

structSTD

{charname[10];

intage;

charsex;

}s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句有错误的是______。

∙A.scanf("%s",s[0].name);

∙B.scallf("%d",&s[0].age);

∙C.scanf("%c",&(ps->sex));

∙D.scanf("%d",ps->age);

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps->age为一个变量,不是指针,所以错误。

17.在以下选项中,操作不合法的一组是______。

∙A.intx[6],*p;p=&x[0];

∙B.intx[6],*p;*p=x;

∙C.intx[6],*p;p=x;

∙D.intx[5],p;p=x[0];

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]对于A和C都可使p指向数组x的首地址。

D是把数组元素x[0]赋给p。

18.已有定义:

charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。

∙A.isupper(C)

∙B.'A'<=c<='Z'

∙C.'A'<=c&&c<='Z'

∙D.c<=('z'-32)&&('a'-32)<=c

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]在本题中,选项B)实际是先计算关系表达式“'A'<=c”的值是0还是1,再比较该值与字符'Z'之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。

19.设有定义:

intn=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是

∙A.p=1;

∙B.*q=2;

∙C.q=p;

∙D.*p=5;

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]指针变量的定义。

[解题要点]选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。

[考点链接]通过指针引用一个存储单。

20.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是______。

∙A.一对一

∙B.一对多

∙C.多对一

∙D.多对多

(分数:

4.00)

 A.

 B. √

 C.

 D.

解析:

[解析]因为一间宿舍可以住多个学生,即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

21.若x为int型变量,则执行以下语句后,x的值为()

  x=6;

  x+=x-=x*x;

∙A.36

∙B.-60

∙C.60

∙D.-24

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

22.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

当执行上述程序段,从键盘上输入55566777abc后,y的值为______。

∙A.55566.0

∙B.566.0

∙C.7777.0

∙D.566777.0

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

23.有下列程序:

intfun1(doublea)(returna*=a;)

intfun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b);

}

main()

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

程序执行后变量w中的值是{{U}}{{/U}}。

∙A.5.21

∙B.5

∙C.5.0

∙D.0.0

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]子函数fun1(doublea)的功能是返回a的平方值的整数部分。

子函数fun2(doublex,doubley)的功能是返回x的平方值的整数部分与y的平方值的整数部分的和。

又因为题中变量w的定义为double型,函数fun2的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。

所以双精度型变量w的值为5.0。

24.以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

∙A.main(){int*p;fun(p);┇     }intfun(int*p){ints;p=&s;}

∙B.main(){int*p;fun(&p);     ┇}intfun(int**p){ints;*p=&s;}

∙C.#include<stdlib.h>main(){int*p;fun(&p);    ┇    }intfun(int**p){*p=(int*)malloc

(2);}

∙D.#include<stdlib.h>main(){int*P;fun(p);     ┇ }intfun(int*p){p=(int*)malloc(sizeof(int));}

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]在选项A中,main()函数中定义了一个指针变量P,调用fun()函数时把p传给形参P,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元。

选项B中实现的也是让实参p指向一个在函数fun()定义的局部变量s;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给形参指针变量P,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值。

25.为了提高软件模块的独立性,模块之间最好是{{U}}{{/U}}。

∙A.控制耦合

∙B.公共耦合

∙C.内容耦合

∙D.数据耦合

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。

在程序设计中,各模块间的内聚性越强,则耦合性越弱。

一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。

26.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为

∙A.0

∙B.1

∙C.-1

∙D.一个非0值

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]文件尾测试函数feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。

此时如果读数据,将会出现错误。

为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能是测试fp指向的文件是否到达文件尾。

若到达文件尾,返回值为非0,否则返回值为0。

在本题中fP指向的某文件还没有到了文件尾,因此返回0。

27.若有以下定义和语句:

ints[4][5],(*ps)[5];

ps=s;

则对s数组元素的正确引用形式是

∙A.ps+1

∙B.*(ps+3)

∙C.ps[0][2]

∙D.*(ps+1)+3

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题首先定义了一个4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。

此时数组元素s[i][j]的地址为“*(ps+1)+j”,数组元素s[i][j]可表示为*(*(ps+1)+j)。

选项B表示的是数组元素a[3][0]的地址;选项D表示的是数组元素s[1][3]的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项c中ps[0][2]无条件等价于“*(ps[0]+2)”又无条件等价于”(*(ps+0)+2)”,即是数组元素s[0][2]。

所以,4个选项中C为所选。

28.若有以下说明和定义:

uniondt

{inta;charb;doublec;}data;

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

∙A.data的每个成员起始地址都相同

∙B.变量data所占内存字节数与成员c所占字节数相等

∙C.程序段:

data.a=5;printf("%f/n",data.c);输出结果为5.000000

∙D.data可以作为函数的实参

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C),因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D),C语言规定,不能把共用体变量作为函数的参数。

29.在Windows环境下,能实现窗口移动的操作是()

∙A.用鼠标拖动窗口中的任何部位

∙B.用鼠标拖动窗口的边框

∙C.用鼠标拖动窗口的控制按钮

∙D.用鼠标拖动窗口的标题栏。

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]鼠标拖动窗口的标题栏,能实现窗口的移动;拖边框,实现窗体的大小调整。

30.若有以下语句,则以下叙述中正确的是

typedefstructS

{intg;charh;}T;

∙A.可用S定义结构体变量

∙B.可用T定义结构体变量

∙C.S是struct类型的变量

∙D.T是structS类型的变量

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]typedefstructS{intg;charh;}T;的功能是将"structS"结构体类型用“T”来表示,所以可以用T来定义结构体变量。

31.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

∙A.pb=&x;

∙B.pb=x;

∙C.*pb=&x;

∙D.*pb=*x

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]选项A将变量x的地址赋绐指针变量pb,使pb指向x‘选项B是烙x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。

32.若有代数式

(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是______。

∙A.sqrt(fabs(pow(n,x)+exp(x)))

∙B.sqrt(fabs(pow(n,x)+pow(x,e)))

∙C.sqrt(abs(n^x+e^x))

∙D.sqrt(fabs(pow(x,n)+exp(x)))

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]B选项中函数pow(x,e)错误,应该直接使用exp(x)函数。

C选项中函数abs(n^x+e^x)错误,应该使用fabs()返回浮点数的绝对值。

D选项中pow(x,n)参数顺序错误。

本题正确答案为A。

33.设a=12,a定义为整型变量。

表达式a+=a-=a*=a的值为______。

∙A.12

∙B.144

∙C.0

∙D.132

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算计a+=a,故表达式和a的值都为a+a=0。

34.在数据结构中,从逻辑结构上看可以分成______。

∙A.动态结构和静态结构

∙B.线性结构和非线性结构

∙C.内部结构和外部结构

∙D.紧凑结构和非紧凑结构

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

35.以下选项中,合法的是{{U}}{{/U}}。

∙A.charstr3[]={'d','e','b','u','g','/0'};

∙B.charstr4;str4="helloworld";

∙C.charname[10];name="china";

∙D.charstr1[5]="pass",str2[6];str2=str1;

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]选项B不能把一个字符串赋值给一个字符变量,选项C和D犯了同样的错误是把字符串赋给了数组名。

二、{{B}}填空题{{/B}}(总

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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