二级C语言37.docx

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

二级C语言37.docx

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

二级C语言37.docx

二级C语言37

二级C语言-37

(总分:

57.99,做题时间:

90分钟)

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

35,分数:

48.00)

1.有以下程序:

#include<stdio.h>

main()

{intc;

while((c=getchar())!

='/n')

switch(c-'2')

{case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+4);

case4:

putchar(c+4);break;

}

printf("/n");

}

输入以下数据,<CR>代表一个回车符,

2743<CR>

程序的输出结果是()。

∙A.877

∙B.966

∙C.778

∙D.766

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题通过一个while循环向键盘缓冲区读取字符,直到读到的字符是回车键结束循环。

当读到的c为'2'时,c-'2'为0,switch语句中没有case0:

所以没有输出,继续读下一个;当c为'7'时,c-'2'=5,也没有输出;当c为'4'时,c-'2'=2,执行case2:

后面的语句输出一个字符c+4='4'+4='8';当c为'3'时,c-'2'=1,执行case1:

后面的语句,连续输出两次c+4='3'+4='7'。

故程序输出结果是877,应该选择A。

2.下列不属于软件工程的3个要素的是{{U}}{{/U}}。

∙A.工具

∙B.过程

∙C.方法

∙D.环境

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]软件工程包括3个要素,即方法,工具和过程。

方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成:

过程支持软件开发的各个环节的控制、管理。

3.若有代数式

,(其中P仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是{{U}}{{/U}}。

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

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

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

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

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对两者的和计算绝对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中表达式的值。

4.以下if语句书写正确的是{{U}}{{/U}}

∙A.if(x=0;)printf("%f",x);elseprintf("%f",-x);

∙B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);

∙C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);

∙D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

5.数据库系统的核心是

∙A.数据库

∙B.数据库管理系统

∙C.模拟模型

∙D.软件工程

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]数据库管理系统(DatabaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

6.有以下程序:

#include<stdio.h>

main()

{charc[2][5]={"6934","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=c[i];

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

for(j=0;p[i][j]>0&&p[i][j]<='9';j+=2)

s=10*s+p[i][j]-'0';

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

}

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

∙A.693825

∙B.69825

∙C.63825

∙D.6385

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]本题的意图在于将c中两个字符串的偶数位置的数字组成一个新数,找到的四个数字分别为6、3、8、5,组成的数为6385,所以答案为D选项。

7.有以下程序

#include<stdio.h>

main()

{FILE*fp;

inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

tp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

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

}

程序的运行结果是______。

∙A.1,2,3,0,0,1,2,3,0,0,

∙B.1,2,3,1,2,3,0,0,0,0,

∙C.123,0,0,0,0,123,0,0,0,0,

∙D.1,2,3,0,0,0,0,0,0,0,

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]fwrite函数将数组a写入文件,写入两遍,读出后为选项A的值,所以选择A。

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

#include<stdio.h>

#defineF(x)2.84+x

#definew(y)printf("%d",(int)(y))

#defineP(y)w(y)

main()

{intx=2;

P(F(5)*x);

}

∙A.12

∙B.13

∙C.14

∙D.16

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题考查带参数的宏定义及相关运算。

P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。

9.下列程序段的输出结果是()。

voidfun(int*x,int*y)

{printf("%d%d",*x,*y);*x=3;*y=4;}

main()

{

intx=2,y=1;

fun(&y,&x);

printf("%d%d",X,y);

}

∙A.1243

∙B.1212

∙C.1234

∙D.2112

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题主函数中首先定义了两个变量x和y,并初始化为2和1,然后将y和x的地址值,传入函数fun(),函数fun()中的形参x和y分别指向主函数中的变量y和x,所以fun()函数输出的值为1和2,fun()函数在结束之前把形参x所指内容赋为3,把形参y所指内容赋为4,所以返回主函数后,主函数中的x和y已被改写为4和3。

故程序输出结果为1243。

选项A正确。

10.C语言运算对象必须是整型的运算符是______。

∙A.%=

∙B./

∙C.=

∙D.<=

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]在C语言中,模运算(即取余运算%)的运算对象必须是整型数据(常量、变量或表达式)。

11.有以下程序

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]);

}

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

∙A.753

∙B.357

∙C.369

∙D.751

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

评析:

此题考核的是二维数组的应用,将初始值放在—对大括号内,按数组元素排列的顺序对各元素赋值,二维数组中行下标可以省略,但列下标必须要指定,由此题可以看出数组t是一个三行三列的二维数组,执行for循环语句t[2-i][i]分别为t[2][0],t[1][1],t[0][2],得出输出结果为357。

12.以下不合法的用户标识符是{{U}}{{/U}}。

∙A.804zhang

∙B._hh

∙C.yy614

∙D.If

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

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

13.函数rewind的作用是

∙A.使文件位置指针重新返回文件的开始位置

∙B.将文件位置指针指向文件中所要求的特定位置

∙C.使文件位置指针指向文件的末尾

∙D.使文件位置指针自动移至下一个字符位置

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]函数rewind的功能是将文件指针重新指向一个流的开头。

用法如下:

intrewind(FILE*stream);并且无返值。

14.在C语言中,函数返回值的类型最终取决于{{U}}{{/U}}。

∙A.函数定义时在函数首部所说明的函数类型

∙B.return语句中表达式值的类型

∙C.调用函数时主调函数所传递的实参类型

∙D.函数定义时形参的类型

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]在C语言中,应当在定义函数时指定函数值的类型。

凡不加类型说明的函数,默认按整型处理。

在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。

如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

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

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);

}

∙A.2143

∙B.1212

∙C.1234

∙D.2112

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

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

16.若有以下函数首部

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是______。

∙A.intfun(double*,int*);

∙B.intfun(double,int);

∙C.intfun(double*x,intn);

∙D.intfun(doublex,int*n);

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题考查的是函数的声明。

函数声明的一般形式为:

函数类型 函数名(参数类型1[,参数名1],参数类型2[,参数名2]……);其中,参数名可以省略。

本题中的fun函数有两个参数,一个类型是double型的一维数组,另一个是int型的指针。

而在C语言中,一维数组用作函数参数和该数组元素的指针类型是等价的。

所以本题的正确答案是选项A。

17.执行下列程序段后,变量a,b,c的值分别是{{U}}{{/U}}。

intx=5,y=4;

inta,b,c;

a=(--x==y++)?

x:

++y;

b=++x;

c=y;

∙A.a=5,b=5,c=5

∙B.a=4,b=5,c=5

∙C.a=5,b=6,c=5

∙D.a=1,b=5,c=6

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查自加(++)、自减(-)运算符的使用。

“++i,--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算:

“i++,i--”,先使用此时的i的值参与运算,在使用i之后,再使i的值加1或者减1。

对于第1个表达式--x=4,y++=4。

两者相等,--x==y++为真,所以a=x=4,执行完此语句后y的值是5。

第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5;第一个表达式c=y=5。

18.设有以下定义:

  typedefunion

  {longi;intk[5];charc;}DATE;

  srtuctdate

  {intcat;DATEcow;doubledog;}too;

  DATEmax;

  则下语句的执行结果是()

  printf("%d,"sizeof(structdate))+sizeof(max));

∙A.25

∙B.30

∙C.18

∙D.8

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

19.在执行以下程序时,为了使输出结果为t=4,给a和b输入的值应该满足的条件是_______。

main()

{

ints,t,a,b;

scanf("%d%d",&a,&B);

s=1;t=1;

if(a>0)s=s+1;

if(a>B)t=s+t;

elseif(a==B)t=5;

elset=2*s;

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

}

∙A.a>b

∙B.a<b<0

∙C.0<a<b

∙D.0>a>b

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]要使输出结果为t=4,必须要执行elset=2*s;和if(a>b)t=s+t;语句。

如果执行if(a>b)t=s+t;语句,则条件为a>b,要求s=3,在该语句前面的语句中没有条件可以满足s=3;如果孰行elset=2*s;语句,则条件为a<b,要求s=2,需要执行if(a>0)s=s+1;语句,所以应满足条件0<a<b。

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

∙A.一个C语言程序只能实现一种算法

∙B.C程序可以由多个程序文件组成

∙C.C程序可以由一个或多个函数组成

∙D.一个C函数可以单独作为一个C程序文件存在

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]一个C语言程序能实现多种算法,所以A错误。

21.开发软件时对提高开发人员工作效率至关重要的是{{U}}{{/U}}

∙A.操作系统的资源管理功能

∙B.先进的软件开发工具和环境

∙C.程序人员的数量

∙D.计算机的并行处理能力

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

22.下列特征中不是面向对象方法的主要特征的是{{U}}{{/U}}。

∙A.多态性

∙B.继承

∙C.封装性

∙D.模块化

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。

其特点包括:

分类性、多态性、封装性、模块独立性、继承和多态性等。

模块化是结构化程序设计的特点。

23.下列数据结构中,能够按照“先进后出”原则存取数据的是{{U}}{{/U}}。

∙A.循环队列

∙B.栈

∙C.队列

∙D.二叉树

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。

可以进行插入和删除运算的一端称为栈顶,封闭的一端称为栈底。

栈顶元素是最后被插入的元素,而栈底元素是最后被删除的。

因此,栈是按照先进后出的原则组织数据的。

24.下列程序的输出结果为{{U}}{{/U}}。

main()

{unionun

{char*name;

intage;

intpay;

}s;

s.name="zhaoming":

s.age=32;

s.pay=3000;

printf("%d/n",s.age);

}

∙A.32

∙B.3000

∙C.0

∙D.不确定

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查的是联合体的有关概念。

因为联合体是各个成受共享一段存储空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出s.age实际上输出了最后存入的3000,因为3000已经把原来存入的s.age(32)的值覆盖。

25.用C语言编写的代码程序A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]用C语言编写的代码程序是一个源程序,不可立即执行,必须经过编译器将其生成目标程序,然后经过连接之后才能生成可执行的代码。

26.下列关于C语言数据文件的叙述中正确的是

∙A.文件由ASCII码字符序列组成,C语言只能读写文本文件

∙B.文件由二进制数据序列组成,C语言只能读写二进制文件

∙C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

∙D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。

根据数据的组织形式,可分为ASCII文件和二进制文件。

ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。

二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

27.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。

∙A.int*i=NULL;scanf("%d",i);

∙B.float*f=NULL*f=19.5;

∙C.chart='m',*c=&t;*c=&t;

∙D.long*L;L='/0';

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]选项C中语句"*C=&t;"错误;选项D中指针"L='/0'"不正确,L应指向确定的地址单元,而不是特定的值;选项B中语句"float*f=NULL"错误,缺少语句结束符“;”。

28.线性表的顺序存储结构和线性表的链式存储结构分别是()。

∙A.顺序存取的存储结构、顺序存取的存储结构

∙B.随机存取的存储结构、顺序存取的存储结构

∙C.随机存取的存储结构、随机存取的存储结构

∙D.任意存取的存储结构、任意存取的存储结构

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。

对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

29.有以下程序:

typedefstruct{intb,p;}A;

voidf(Ac)/*注意:

c是结构变量名*/

{intj;

c.b+=1;c.p+=2;

}

main()

{inti;

Aa={1,2};

f(a);

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

}

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

∙A.2,3

∙B.2,4

∙C.1,4

∙D.1,2

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]在函数调用变量作为参数传递是进行值传递,在函数中对形参变量的修改不会影响对应的实参变量。

本题中定义了一个函数f(),用变量作为实参,在main()函数中调用了一次f()函数,形参进行计算:

c.b+=1=1+1=2,c.p+=2=2+2=4,由于参数传递变量不会影响实参的值,所以a.b和a3.p还是原来的值。

30.关系数据模型{{U}}{{/U}}

∙A.只能表示实体间的1:

1联系

∙B.只能表示实体间的1:

n联系

∙C.只能表示实体间的m:

n联系

∙D.可以表示实体间的上述3种联系

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]数据模型用来表示实体间的联系,但不同的数据库管理系统支持不同的数据模型。

常用的数据模型有层次模型、网状模型和关系模型,层次模型不能表示多对多联系,网状模型和关系模型都能表示任意一种联系。

31.有以下程序

main()

{intp[8]=(11,12,13,14,15,16,17,18),i=0,j=0;

while(i++<7)if(p[i]%2)j+=p[i];

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

}

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

∙A.42

∙B.45

∙C.56

∙D.60

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题程序中while循环的条件是i++<7,由于在循环体中没有改变i的值,所以循环过程是i从初始值0开始,每次自加1,当i为7再次进行循环条件判断时退出循环。

而在循环体中,i从1到7变化。

循环体是一个if语句,当p[i]%2为真,即p[i]为奇数时执行j+=p[i]。

所以该段程序的实际效果是将p[1]~p[7]中的奇数累加到变量j中。

所以j=13+15+17=45,选B。

32.在下列选项中,没有构成死循环的程序段是_____。

∙A.inti=100;while

(1){i=i%100+1;if(i>100)break;}

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

当前位置:首页 > 人文社科

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

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