国家二级(C语言)机试模拟试卷16(共384题)_第1页
国家二级(C语言)机试模拟试卷16(共384题)_第2页
国家二级(C语言)机试模拟试卷16(共384题)_第3页
国家二级(C语言)机试模拟试卷16(共384题)_第4页
国家二级(C语言)机试模拟试卷16(共384题)_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

家二级(C语言)机试模拟试卷16

(共9套)

(共384题)

国家二级(C语言)机试模拟试卷第1

一、选择题(本题共39题,每题1.0分,共39分。)

1、以下关于c语言的叙述中正确的是()。

A、预处理命令通常位于函数体外面,但也可以位于函数体中间

B、C语言中的变量定义须在其他语句之前

C、在C语言程序的书写中,一个语句必须单占一行

D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的

main函数

标准答案:A

知识点解析:源程序中可以有预处理命令(include命令仅为其中的•种)。C语言中

的变量可以在使用之前的任何位巴进行定义。C语言程序的书写中,多个语句可以

位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以

由一个或多个源文件组成,但仅可以有一个main函数.

2、下列不合法的用户标识符是()。

A、j2_KEY

B、Double

C、4d

D、_8_

标准答案:C

知识点解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、

数字和下划线组成,并且第一个字符必须是字母或下划线。

3、下列不合法的用户标识符是()。

A、j2_KEY

B、Double

C、4d

D、_8_

标准答案:C

知识点解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、

数字和下划线组成,并且第一个字符必须是字母或下划线。

4、有以下结构体说明、变量定义和赋值语句:struetSTD{charname[10]:int

age;charsex;)s[5],*ps;ps=&s|0];则以下scaanf函数调用语句有错误的是

()。

A、scant("%s",s[0J.name);

B、seanf("%d",&s|0|.age);

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

D、seanf("%d",ps->age);

标准答案:D

知识点解析:本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求

参数为指针,而D选项中ps->agc为一个变量,不是指针,所以错误。

5、有以下程序段:charch;intk;ch=,a、k=12;printf("%c,%d,”,ch,ch,

k);printf("k=^d\n",k);已知字符a的ASCH码十进制值为97,则执行上述程

序段后输出的结果是()c

A、因变量类型与格式描述符的类型不匹配,输出无定值

B、输出项与格式描述符个数不符,输出为零值或不定值

C、a,97,12k=12

D、a,97,k=12

标准答案:D

知识点解析:字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的

任何运算。"ch=3,",%c表示以字符格式输出ch的值,所以输出为a;%d表示以

十进制代码的形式输出ch的值,为97:k没有对应的输出格式.不输出°在第二

个语句中,首先输出“k=”,然后以十进制代码输出k的值,为12。

6、有以下程序:#includevoidswap(char*x,ehar*y){chart;t=*x;*x=y;

*y=t;}main。{chads1:“abe”,*s2=“123":swap(sl,s2):prinff("%s,%s\

n”,si,s2);}}程序执行后的输出结果是()。

A、321,cba

abe,123

C、123,abe

D、Ibc,a23

标准答案:D

知识点解析:字符串是一个特殊的数组,所以按照数组的规则,si应该指向的是

数组的首地址,即“abc”的第一个字符的地址。s2指向的是“123”的第一个字符的地

址。调用swap函数之后交换的是两个字符串的第一个字符H和T的内容,所以打

印输出为D.

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

A、可以通过typedef增加新的类型

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、用typedef可以为各种类型起别名,但不能为变量起别名

标准答案:A

知识点解析:关键字lypedef的作用只是将C语言中的已有的数据类型作了置换,

并不是增加新的类型,所以A错误。

8、设有以下语句:typedefstructTT{eharc;inta[4J;)C1N;则下面叙述中正确

的是()。

A、CIN是structTT类型的变量

B、TT是struct类型的变量

C、可以用TT定义结构体变量

D、可以用CIN定义结构体变量

标准答案:D

知识点解析:本题考查lypedef重新声明一种结构体类型,其中CIN为结构体类型

名,而不是结构体变量,所以D选项正确。

9、设有:chars[5],c;,则调用函数scanf能正确给s和c读入数据的是3。

A、scanf("%s%c”,s,c);

B、scanf("%d%c",&s,&c);

C、scanf("%d%c",s,&c);

D、scanf("%s%cM,s,&c);

标准答案:D

知识点解析:s[5]中放的是字符串,故输入的类型应该是%s;c中放的是字符,故

输入的是%©。要正确读入数据必须要使用s和c的地址,而s代表地就是字符数

组的首地址c

10N设x=021,y=012,则z=x|y的值是()。

A、1

B、0

C、00011011

D、11000010

标准答案:C

知识点解析:本题主要考查按位或运算。按位或是对两个运算对象相应的位进行逻

辑或运算,其运算规则和逻辑或相同,两个运算对象只要有一个是1,则结果为

lo

11、以下标识符不是关键字的是()。

A、break

char

C、Switch

D^return

标准答案:C

知识点解析:此题考查标识符和关键字的概念。需要注意的是C语言是区分大小

写的,“switch”是关键字,但“Switch”不是关键字。

12>若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4

的值是()。

A、2.5

B、2.75

C、3.5

D、0

标准答案:A

知识点解析:此题考查的是变量的类型转换。表达式中(int)(x+y)把x+y=(7.2)的值

强制转化成整型即得到7,那么a%3*(int)(x+y)%2的值为整型常量1,所以a%

3*(int)(x+y)%2/4的值为0;因为变量x是浮点型变量,所以表达式x+a%

3*(int)(x+y)%2/4的结果也是浮点型,得到2.500000<>

13,有以下程序:#inckidemain(){intc;while((c=getchar())!=,\n'{switch(c-<3,)

{case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:

putchar(c+3);case4:putchar(c+3);break;}}printfl\n");}从第一列开始输入

数据(代表一个回车符):3845,则程序输出结果为])。

A、77889

B、77868

C、776810

D、77886610

标准答案:A

知识点解析:题中while循环的条件是:当从键盘读入的字符不是时,执行

while循环。输入第一个字符3时:执行case。,什么也不输出;easel,输出7;

case2,输出7;遇到break语句,跳出SWilch语句。输入第二个字符8时:c-

。3・5,不执行任何语句。输入第三个字符4时,:C-,3=1,执行easel输出8;

case2,输出8;遇到break语句,跳出Switch语句。输入第四个字符5时:c-

’3'=2,执行case2,输出9:遇到break语句,跳出switch语句。

14、有以下程序:#include<stdio.h>#include<string.h>main()

{chara[]=n1234%*b="ABC";printf("%d%d%d%d\n”,strlen(a),sizeof(a),

strlen(b),sizeof(b));}程序运行后的输出结果是()。

A、4534

B、4321

C、4533

D、4513

标准答案:A

知识点解析:对于字符数组a,含有4个元素,所以sirlen为4,而sizeof包括最后

隐藏的\0,故sizeof有5个。对于字符串b,strlen为3,关键是sizeof,这里的

sizeof不再是指数组的长度,因为b是一个地址值,整型数据,所以占用了4个字

节。

15、以下有关宏的描述不正确的是()。

A、宏定义不做语法检查

B、双引号中出现的宏名不进行替换

C、宏名无类型

D、宏名必须用大写字母表示

标准答案:D

知识点解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,

标识符称为宏名,无类型;②双引号中出现的宏名不替换;③宏名的定义通常用

大写字母,但不是必须用大写;④宏定义不是赋值语句,不做语法检查。

16^有以下程序:#includemain(){inti,data:$canf("%d”,&data);for(i=0;i

<5;i++){if(i<data)continue;printf("%d,”,i);)printf("\n");}程序运行

时,从键盘输入:3〈回车,后,速序输出结果为()。

A、3,4,

B、I,2,3,4,

C、0,1,2,3,4,5,

D、0,1,2,

标准答案:A

知识点解析:continue语句的作用是结束本次循环,即不再执行循环体中continue

语句之后的语句,而是立即转入下次循环对循环条件的判断与执行。本题执行过程

为:输入3,则data:3;执行for循环,i=0,if条件成立,结束本次循环,不输出

i值,执行下一次循环;直到i>=3,if条件不成立,依次输出i值3、4,直到i=5

退出for循环4

17、以下不正确的转义字符是()。

A、\f

B、'\d'

C>As,

D、'088'

标准答案:D

知识点解析:是反斜线符,是整型变量转义字符,“飞"是字符串型转义

字符,C语言中没有规定(088小为转义字符。

18、有以下程序:#include<stdio.h>intfun()(staticintx=l:x+=l:return

x;)main()inti,s=l;for(i=l;i<=5;i++)s+=fun();printf("%d\nH,s);}程

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

A、120

B、1

C、6

D、21

标准答案:D

知识点解析:fun函数中的变量x为静态的局部变量,占用固定的内存单元,下一

次调用时仍可以保留上次调用时的值。也就是说,如果多次调用fun函数,x的定

义只在第一次调用时有效,从第二次调用开始,x的定义卡相当于不存在,直接使

用上次x的值,fun函数被调用了5次,每次调用后的返回值累加到s上,5次调用

后,x的值为6,s的值为1+2+3+4+5+6=21,因此D选项正确。

19、当用“#defineF37.5『定义后,下列叙述正确的是()。

A、F是float型数

B、F是char型数

C、F无类型

D、F是字符串

标准答案:D

知识点解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是

代表形参表达式的标识符(字符串)。

20、以下数据结构中,属于非线性数据结构的是(),

A、栈

B、线性表

C、队列

D、二叉树

标准答案:D

知识点解析:二叉树属于非线性结构。栈是一种特殊的线性表,这种线性表只能在

固定的一端进行插入和删除操作;队列可看作是插入在一端进行,删除在另一端进

行的线件表c

21、面向对象方法中,继承是指()<>

A、一组对象所具有的相似性质

B、一个对象具有另一个对象的性质

C、各对象之间的共同性质

D、类之间共享属性和操作的机制

标准答案:D

知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为

基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,

而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

22、以下标识符不是关键字的是()。

A、break

char

C、Switch

D^return

标准答案:C

知识点解析:此题考查标识符和关键字的概念。需要注意的是C语言是区分大小

写的,switch是关键字,但Swiich不是关键字。

23、下列叙述中,正确的是()。

A、软件交付使用后还需要进行维护

B、软件一旦交付使用就不需要再进行维护

C、软件交付使用后其生命周期就结束

D、软件维护是指修复程序中被破坏的指令

标准答案:A

知识点解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不

断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是

指软件产品从提出、实现、使用维护到停止使用退役的过程。

24、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A、外模式

B、内模式

C、概念模式

D、逻辑模式

标准答案:B

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数

据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模

式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式乂

称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。

25、若有定义语句:chars[10]="1234567\0\0M;,则strlen(s)的值是()。

A、7

B、8

C、9

D、10

标准答案:A

知识点解析:C语言规定以字符、(T作为字符串结束:的标识符。strlen函数返回的

是字符串的长度,不包含字符、0',所以值是7。

26>有以卜程序#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=3);else

if(x!=10)printfC'%d\n",x);)程序运行时,输入的值在哪个范围才会有输出结果

A、小于3的整数

B、不等于10的整数

C、大于3或等于10的整数

D、大于3且不等10的整数

标准答案:D

知识点解析:根据代码可知如果x的值小于3,执行空语句,不进行打印操作,如果x

的值大于3,再判断x的值是否不等于10,如果不等于10就打印x的值,所以选择D

选项。

27、以下叙述中正确的是()。

A、一条语句只能定义一个数组

B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单

C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

D、在引用数组元素时,下标表达式可以使用浮点数

标准答案:B

知识点解析:A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语

句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,也可以

是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因

此B选项正确。

28、有以下程序:#includeintf(intx,intY){retum((y-x)*x);}main(){inta:3,

b=4,c=5,d:d=f(f(a,b),f(a,c);printf(,,%d\n,',d);)程序运行后的输出结

果是()。

A、7

B、10

C、8

D、9

标准答案:D

知识点解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用

f(f(a,b),f(a,c));即调用f(3,6)函数返回9。

29、下面不属于需求分析阶段工作的是()。

A、需求获取

B、可行性研究

C、需求分析

D、撰写软件需求规格说明书

标准答案:B

知识点解析:需求分析阶段对待开发软件提出的需求进行分析并给出详细定义,编

写软件规格说明书及初步的用户手册,提交评审,可以分为4个方面:需求获取、

需求分析、编写需求规格说明书和需求评审。可行性研究是软件生命周期的第二阶

段主要任务,在需求分析之前,故选择B选项。

30、以下选项中关于C语言常量的叙述错误的是()。

A、C语句必须在一行内写完

B、C程序中的每一行只能写一条语句

c、c语言程序中的注释必须与语句写在同一行

D、简单C语句必须以分号结束

标准答案:D

知识点解析:C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程

序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句

放在一行也可以不放在一行,所以C选项错误。

31、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返

回值为()。

A、0

B、

C、非0值

D、NULL

标准答案:C

知识点露析:本题考查文件的定位。feof()函数的用法是从输人流读取数据,如果

到达文件末尾(遇到文件结束符),fcof()函数值为非零值,否则为0,所以选项C正

确。

32、有以下程序:#inckide<stdio.h>main(){intx=l,y=0,a=0,b=0;

switch(x){easel:switch(y){caseO:a++;break;caseI:b++;break;}case2:

a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程

序的运行结果是()。

A、a=2,b=2

B、a=2,b=1

C^a=l,b=l

D、a=l,b=0

标准答案:B

知识点解析:「语言还提供了一种用于多分支选择的switch语句,计算表达式的

值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相

等时,即执行其后语句,然后不再进行判断,继续执行后面所有case后语句。如

表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

x=l;进入第一层switch,y=0;进入第二层switch。执行a++;break;后a=l;在

进入case2,(这里easel:没有break,)执行了a++.b++,由于存在break,则跳出

switch,得到a=2.b=l,因此答案为B选项。

33、以下叙述中正确的是

A、程序必须包含所有三种基本结构才能成为一种算法

B、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令

C、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达

D、只有简单算法才能在有限的操作步骤之后结束

标准答案:B

知识点解析:C语言程序可以不包含三种基本结构,也可以包含其中的一种或多种,

所以A错误,三种基本结构可以表示任何复杂的算法,所以C错误,正确的算法,不

管是简单算法还是复杂算法都可以在有限的操作步骤之后结束,这是算法的有穷性,

所以D错误。

34、有以下程序#inckide<stdio.h>#include<string.h>#include<stdlib.h>

inain(){char*pl,*p2;pl=p2=(char*)malloc(sizeof(char)*10);strcpy(pl/'mallocn);

strcpy(p2,pl+l);printf("%c%c\n",pl[0],p2[0]);}程序的运行结果是

A、aa

ma

C、am

D、mm

标准答案:A

知识点解析:malloc函数的原型为:malloc(size);,函数的作用是在内存的动态存

储区分配一个长度为size的连续空间。程序执行过程为:定义两个字符类型指针

pl和p2,动态开辟10个字符类型的内存单元,并且使指针pl与p2均指向这10

个内存单元的第一个单元。调用strcpy函数,将字符串“malloc”赋值给这10个内存

单元的前7个单元,存储情况为:malloc\0,此时pl指向10个内存单元的第一个

单元。再次调用strcpy函数,这10个内存单元的第2个单元到第7个单元元素重

新赋值给p2指向的内存单元以及以后的5个单元,存储情况为:alloc\0\0,此时

pl和p2均指向10个内存单元的第一个单元。输出两个指针指向单元的数据值,

结果为:aa,A选项正确。

35、下列叙述中正确的是

A、循环队列是顺序存储结构

B、循环队列是链式存储结构

C、循环队列是非线性结构

D、循环队列的插入运算不会发生溢出现象

标准答案:A

知识点解析:循环队列是队列的一种顺序存储结构线性结构是n个数据元素构成

的有限序列,除第一个元素外的每一个元素,有且只有一个前件,除最后一个元素

外,有且只有一个后件。循环队列是线性结构。当需要插入的数据大于循环队列的

存储长度,入队运算会覆盖前面的数据,发生溢出现象。故A选项正确。

36、下面不属于黑盒测试方法的是

A、边界值分析法

B、基本路径测试

C、等价类划分法

D、错误推测法

标准答案:B

知识点解析:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误

推测法和因果图等。基本路径测试属于白盒测试,故正确答案为B选项。

37、若有定义语句:doublex,y,*px,*py;执行px=&x;py=&y;正确的输入语句是

A、scanf("%lf%lf;x,y);

B、scanf("%f%f'&x,&y);

C、scanfC%f%f,x,y);

D、scanf("%lf%le",px,py);

标准答案:D

知识点解析:%1G%怕是针对double的,如果仅用%「,输入的数据可能不能被完

全接收,数据的精度可能不足。%£主要针对float类型的变量的输入,选项B错

误。根据scanf(格式,变量地址),选择A,C错误。因此,选择D

38、以下叙述错误的是

A、计算机可以直接识别由十六进制代码构成的程序

B、可以连续执行的指令的集合称为“程序”

C、程序是人与计算机“对话”的语言

D、计算机可以直接识别由0和1组成的机器语言代码

标准答案:A

知识点解析:计算机只能识别机器码,机器码是由二进制构成的,因此只能识别二

进制构成的代码程序,不可以直接识别由十六进制代码构成的程序,十六进制的代

码必须转为二进制才能在计算机,直接执行。囚此选项A错误

39、以下选项中,合法的一组C语言数值常量是()。

A、12.0Xa234.5e0

B、028.5e-3-Oxf

C、.1774el.5Oabc

D、0x8A10,0003.e5

标准答案:A

知识点解析:C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头

数字是Ox.C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实

型常量必须要有小数点;指数形式,以”e“或”E”后跟一个整数来表示以10为底数

的幕数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。

B)选项中028错误,八进制中没有数字8。C)选项中4el.5中e后面的指数不是整

数。D)选项中3.e5小数点后面缺少数字。

二、程序填空题(本题共[题,每题7.0分,共I分。)

40、给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文

件myfile4.txt中,用作为字符申输入结束的标志。然后将文件的内容读出显示

在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序

的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程

序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的

结构!#include<stdio.h>#include<string.h>#include<stdlib.h>void

WriteText(FILE*);voidReadText(FILE*);main。{FILE*fp;

if((fp=fopen("myfile4.txt“,"w"))=NULL){printffopenfail!!\n");exit(O);)

WriteText(fp);fclose(fp);if((fp=fopen(nmyfile4.txt","rH))==NULL)(printf("open

fail!!\n");exit(O);)ReadText(fp);fclose(fp);)/**********found**********

/voidWriteText(FILE__1___){charstr[81];printf("\nEnterstringwith-1to

end:\n");gets(str);while(strcmp(str,"-l")!=0)|/**********found**********

/fputs(__2___,fw);fputs(H\n",fw);gets(str);))voidReadText(FILE*fr)

{charstr[81]:printf(H\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);

while(!fcof(fr)){/**********found**********/pfintf("%sn,3);

fgets(str,81,fr);}}

标准答案:(l)*fw(2)str(3)str

知识点解析:第一空:此处是补充函数参数名,参数类型己知是FILE文件指针,

fpuls(”\n”,fw)是将字符“\葭写入文件,可知fw是文件指针名,因此第一空处应

该是voidWriteTex(FILE*fw)。第二空:while(strcmp(slr,"-1")!=0)循环的结束标志

是str字符串等于时循环退出,如果str不等于“-1”,执行循环体内容:用fputs

函数将sir字符串写入文件。fpuls函数的调用形式是:fputs(s,fp)),其中s是指向

字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针,因此第

二处应该是触ns(str,fv/)o第三金:whilc(!fcof(fr))循环的作用是不断读取文件直

到到达文件尾,每次最多读81个,将读到的数据放在sir字符串里,并用prim「输

出到屏幕,因此第三处应该是printf("%s",str)。

三、程序修改题(本题共I题,每题1.0分,共I分0)

41、在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元

素中。下列给定程序中,函数fun的功能是:计算数组元素中所有值为正数的平均

值(不包括0)。例如,数组中元素的值依次为:39、―47、21、2、一8、15、0,

则程序的运行结果为19.250000c请改正程序中的错误,使它能得出正确的结

果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题

程序:#include<conio.h>#include<stdio.h>doublefun(intx[]){/

*********found*********/intslim=0.0:intc=0,i=0:while(x[i]!=0)

{if(x[i]>0){sum+=x[ij;c++;)i++;}/*********found*********/sum\

=c;returnsum;)main(){intx[1000];inti=0;printf(n\nPleaseentersomeclat

a(endwithO):n);do(scanf("%d",&x[i]);}while(x[i++]!=0);printf("%lf\

n",fun(x));}

标准答案:(l)doublesum=0.0;(2)sum/=c;

知识点解析:(1)变量定义错误,变量sum存放所有数据的和,应定义为double

型。(2)c语言中的除法运算符是

四、程序设计题(本题共7题,每题7.0分,共7分0)

42、编写函数fun,其功能是:根据以下公式计算S,并将计算结果作为函数值返

回,n通过形参传入。"♦m'OW…♦F7T7TF;例如,若n的值为11

时,函数的值为1.833333o注意:部分源程序给出如下。请勿改动主函数main

和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试

题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include

<string.h>floatfun(intn){)voidmain(){intn;floatS;systcm(,'CLS");

printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("Theresult

is:%f\n",s);}

标准答案:floatfun(intn){inti,sl=0;floats=0.0;for(i=1;i<=n;i++)

{sl=sl+i;/*求每一项的分母*/s=s+1.0/si;/*求多项式的值*/}return

s;)

知识点解析:此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得

出通项,然后再完成程序语句。本题中表达式的规律是1+2+…+n的倒数之和,那

么可以通过for循环语句来实现第1项到第n项的变化。其实就是累加算法,方法

是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,

因为该变量的作用是累加器,所以初始值应为0(或0.0,根据变量数据类型来确

定),再通过for循环语句来完成累加过程。本题中si用来表示每一项的分母,每

一项的分母都是由前一顼分母加项数。注意,由于si定义成一个整型,所以在

s=s+l.0/si语句中不能把1.0写成1。

国家二级(C语言)机试模拟试卷第2

一、选择题(本题共40题,每题1.〃分,共4〃分。)

1、有以下程序:#include<stdio.h>main(){structSTU{charname|9|;char

sex:doublescore[2];):structSTUa=("Zhao",'m',85,90.0},

b={"QianM,f,95,92.0);b=a:primf("%s%c%2.Of%2.0f\n",

b.name,b.sex,b.scorefO],b.scorefl]);}程序运行的结果是()。

A、Qianf9592

B、Qianm8590

C、Zhaof9592

D、Zhaom8590

标准答案:D

知识点解析:在C语言中,相同类型变量可以通过等号直接赋值,它会按照每个

成员在结构体中的顺序---对应赋初值,可知,a.name="ZhaoH,a.sex=T,

a.scorc[0]=85.0,a.score[l]=90.0,b.name='Qian",b.sex=,m,»

b.sco©01=95.0,b.score[l]=92.0©要特别注意a=b;语句,如果没有该条语

句,则输出A选项的结果。

2、有两个关系R和T如下:।।⑶12|LLL2J则由关系R得到关系T

的操作是()。

A、投影

B、交

C、选择

D、并

标准答案:A

知识点解析:从表图中可以看出,关系T是从关系R中选取一部分字段(A和C)及

其值构成新的关系,是一种纵向操作产生新列,属于投影,正确选项为A。

3、若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够

正确表示该代数式的C语言表达式是()。

A、sqrt(fabs(pow(n,x)+exp(x)))

B>sqrt(fabs(pow(n,x)+pow(x,e)))

C、sqrt(abs(nAx+eAx))

D、sqrt(fabs(pow(x,n)+exp(x)))

标准答案:A

知识点解析:B选项中函数pow(x,e)错误应该直接使用exp(x)函数。C选项中函

数abs(Mx+eAx)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参

数顺序错误。

4、以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=l;k<3:

k++);printfC:*:");程序段的输出结果是()°

A、**

B、****

C、

D、********

标准答案:c

知识"解析:由于内层循环for(k=l;k<3;k++)后面直接跟了空语句“;”所以在循

环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选

择C。

5、有以下程序:#include<stdio.h>intf(intx);main(){intn=Lm;

m=f(f(f(n)));printf(H%d\n",m);)intf(intx){returnx*2;}程序运行后的输出

结果是()。

A、8

B、2

C、4

D、1

标准答案:A

知识点解析:第一次调用m=f(f(f(l))),第二次为m=f(f(2)),第三次为m=f(4),即

返回值为8。

6、下列叙述中正确的是()。

A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D、循环队列中元素的个数是由队头指针和队尾指针共同决定的

标准答案:D

知识点解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所

以A错误;在循环队列中只需要队头指针与队尾两个指车I来共同反映队列中元素

的动态变化情况,所以B与C错误。

7、在数据库管理技术的发展中,数据独立性最高的是()。

A、人工管理

B、文件系统

C、数据库系统

D、数据模型

标准答案:C

知识点解析:在人T管理阶段,数据无法共享,冗余度大.不独立,完全依赖程

序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。

8、若有定义inix,y;并已正确给变量赋值,则以下选项中与表达式(x・y)?(x++):

(y++)中的条件表达式(x-y)等价的是()。

A、(x-y<0||x-y>0)

B、(x-y<0)

C^(x-y>0)

D、(x-y==O)

标准答案:A

知识点解析:条件表达式:x二表达式17表达式2:表达式3的含义是:先求解表

达式1,若为非0(真),则求解表达式2,将表达式2的值赋给X。若表达式1的值

为0(假),则求解表达式3,将表达式3的值赋给X。在本题中与表达式1:(x-y)等

价的是(x-yV0||x-y>0)。

9、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是()。

#inckidemain(){intx;scanf("%d",&X);if(x++>2)printf("%d",x);else

printf(1,%d\nu,x-);}

A、4和3

B、4和2

C、4和1

D、3和2

标准答案:A

知识点解析:本题考查if-clse语句。首先,scanf函数通过键盘读入x的值。当

x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if

条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判

断条件,先取x的值2和2比较,然后将x的值加l(x的值变为3),if条件不成

立,执行下面的else语句,先输出x的值3,再将x的值减1。

10、有以下程序:#includeintadd(inta,intb){return(a+b):}main(){intk,

(*f)(),a=5,b=10;f=add:...}则以下函数调用语句错误的是()。

A、k=f(a,b);

k=add(a,b):

CNk=(*f)(a,b);

D、k=*f(a,b);

标准答案:D

知识点解析:D选项中对(a,b)表示调用后返回一个指向整型数据的地址指针,即

该函数的返回值为指针类型,所以不能将其赋值给整形变量ko

11有以下程序:#inckideintfun(int*k){intb=O;b=*k+b:return(b);)main()

{inta[10]={l,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){printf(“%d”,

fun(&a|i]));}printfCAn­);}程序运行后的输出结果是()。

A、1012

B、810

C、34

D、1028

标准答案:C

知识点解析:b是局部变量,因此当i=2时,fun的返回值值为3,i=3时fun返回

值为4

12、下列工具中,不属于结构化分析的常用工具的是()。

A、数据流图

B、数据字典

C、判定树

D、N—S图

标准答案:D

知识点解析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。

13、数据库应用系统中的核心问题是()。

A、数据库设计

B、数据库系统设计

C、数据库维护

D、数据库管理员培训

标准答案:A

知识点解析:数据库应用系统中的核心问题是数据库的设计。

14、以下关于C语言数据类型使用的叙述中错误的是()。

A、若要处理如、,人员信息”等含有不同类型的相关数据,应自定义结构体类型

B、若要保存带有多位小数的数据,可使用双精度类型

C、若只处理“真”和“假”两种逻辑值,应使用逻辑类型

D、整数类型表示的自然数是准确无误差的

标准答案:c

知识点露析:C语言中没有逻相类型,所以c错误c若要保存带有多位小数的数

据,可以用单精度类型也可以用双精度类型。处理包含不同类型的相关数据可以定

义为结构体类型。整数类型可以无误差的表示自然数。

15,有以下程序#includeUstdio.h>main(){intk=5,n=0;while(k>0){switch(k)

{default:break;easel:n+=k;case2:case3:n+=k;)k-;}printf("%d\n",

n);}程序运行后的输出结果是()。

A、0

B、4

C、6

D、7

标准答案:D

知识点解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=l的

时候,会顺序执行3条语句°

16、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。

A、需求分析阶段

B、概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库

中,即设计出表,所以属于逻辑设计阶段。

17>有以下程序:#include<stdio.h>voidfun(intn,int,*s){intf;

if(n==l)*s=n+l;else{fun(n-l,&f);*s=f;)}main(){intx=0;fun(4,&x);

printf("%d\n”,x);}程序运行后的输出结果是()。

A、3

B、1

C、2

D、4

标准答案:C

知识点解析:本题考查函数的递归调用。将函数参数带入函数中,一步步递归即可

得到结果,结果为2。故选项C正确。

18、设有以下语句:charx=3,y=6,z;z=xAy«2;则z的二进制值是()。

A、00010100

13、U0011011

C、00011100

D、00011000

标准答案:B

知识点解析:本题考查的是位运算符的应用。x和y写成二进制表示分别为

x=00000011,y=00000110,由于左移位运算符“v”的优先级高于按位异或运算符

“八”,左移两位后yvv2=00011000,此结果和x按位异或后xAy«2=00011011。

19、下列选项中,不能作为合法常量的是()。

A、1.234e04

B、1.234c0.4

C、1.234e+4

D、1.234e0

标准答案:B

知识点解析:用指数形式表示的实型常量需注意两点:①e或E后面的指数必须是

整数;②指数必须是不超过数据表示范围的正负整数,并且在e或E前必须有数

字。

20、若有以下语句lypedefstructS{intg;charh;)T;以F叙述中正确的是

A、可用S定义结构体变量

B、可用T定义结构体变量

C、S是struct类型的变量

D、T是structS类型的变量

标准答案:B

知识点解析:本题考查lypedef重新声明一种结构体类型,那么T为结构体类型,

而不是结构体变量,所以B选项正确。

21、程序流程图中带有箭头的线段表示的是()。

A、图元关系

B、数据流

C、控制流

D、调用关系

标准答案:C

知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用

标有名字的箭头表示控制流。所以选择C)。

22>有以下程序:#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;

i<N;i++)b[i]=a[i][i];}main(){intx|||N]={{1,2,3},(4),{5,6,7,8},

{9,10}),y[N],i;fun(x,y);for(i=0;i<N;i++)pfintf("%d,y[i]);pfintf("

\n(I);}程序运行的结果是()。

A、1,2,3,4,

B、1,0,7,0,

C、1,4,5,9,

D、3,4,8,0,

标准答案:B

知识点解析:数组x有4列。fun函数中for循环的作用是将二维数组的对角线元

素赋给b[0],b|l],b|2],b|3]o在主函数中,二维数组初始化为{{1,2,3),

{4),{5,6,7,8),{9,10}),对角线元素为1,0,7,0。

23、下列叙述中正确的是()。

A、循环队列是队列的一种链式存储结构

B、循环队列是队列的一种顺序存储结构

C、循环队列是非线性结构

D、循环队列是一种逻辑结构

标准答案:B

知识点解析:在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

24、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()。

A、16

B、10

C、6

D、4

标准答案:A

知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是

比度为2的结点多一个,所以本题中度为2的结点是5—1=4个,所以度为1的结

点的个数是25—5T=16个。

25、下面描述中,不属于软件危机表现的是()。

A、软件过程不规范

B、软件开发生产率低

C、软件质量难以控制

D、软件成本不断提高

标准答案:A

知识点解析:软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和

进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本

不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择

Ao

26、软件设计中模块划分应遵循的准则是()。

A、低耦合低内聚

B、高耦合高内聚

C、低耦合高内聚

D、内聚与耦合无关

标准答案:C

知识点解析:软件设计中,模块划分应遵循高内聚低耦合的准则,答案选C)。

27、已知大写字母A的ASCII码值是65,小写字母a的ASCII码值是97。以下不

能将变量c中的大写字母转换为对应小写字母的语句是()。

A、c=('A'+c)%26-'a'

B、c=c+32

C、c=c-'A+a,

D、c=(c-'A')%26+'a'

标准答案:A

知识点解析:根据题意可知,小写字母比与之对应的大写字母的ASCII码大32.

A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没

有任何含义,所以选择A选项。

28、有3个关系R、S和T如下:

得到关系T的操作是()。

A、交

B、投影

C、自然连接

D、并

标准答案:C

知识点解析:交:RCIS结果是既属于R又属于S的记录组成的集合。并:RUS是

将S中的记录追加到R后面。上述两种操作中,关系R与S要求有相同的结构,

故A、D选项错误。投影是指从关系模式中指定若干个属性组成新的关系。由于T

中含有R中不存在的属性,明显不可能由R向S投影得到T,故B选项错误。自

然连接:去掉重复属性的等值连接。R与s重复属性是A,等值元组为a和c,进

行自然连接得到的两个元组按照属性ABcD的顺序为c3f4与aln5,正好为题目中

关系T,故C选项正确。

29、有以下程序:#includevoidfun(char**p)inti;for(i=0;i<4;i++)printf(H%

s",P[i]);}main(){char*s[6]={"ABCD","EFGH","IJKLM,"MNOPn,

"QRST","UVWX"(;fun(s);printfC\n");}程序运行后的输出结果是()。

A、ABCDEFGHIJKL

B、ABCD

C、AEIM

D、ABCDEFGH1JKLMNOP

标准答案:D

知识点解析:本题考查字符串数组。s表示指向字符数组的指针,s指向了第一个

字符串,S++指向了第二个字符串,所以最后输出结果为D选项。

30、有以下程序:#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,

3,4,5,6};fp=fbpen(,,d2.dat",‘'w'');fprintf(fp,"%d%d%d\n",a[0],

a|Iba|2]);fprintf(fp,''%d%d%d\n'',a|3],a|4|,a|5|);fclose(fp);

m=fbpen(''d2.daf\''r'>fscanf(fp,''%d%d'',&k,&n);printf(''%d%d\

V,k,n);fclose(fp);}程序运行后的输出结果是()。

A、12

B、14

C、1234

D、123456

标准答案:D

知识点解析:fprintf()函数向文本文件输出数据,将输出的内容按格式输出到硬盘

的文本文件中。执行两次fprimf后,文件中的内容为“123456”,所以D选项正

确。

31、程序调试的任务是()。

A、7

R、6

C、3

D、2

标准答案:C

知识点解析:根据总体结构图可以看出该树的深度为3,比如:XY系统——功能

2——功能2.1,就是最深的度数的一个表现。

32、若要打印出字符A,以下语句不正确的是()。(注:字符A的ASCII码值为

65,字符a的ASCII码值为97)

A、printff'%c\n'',匕'-32);

B、printfi(,,%c\n,\,B'—1);

C、printfC%c\n:65);

D、printfi(,,%d\n,\

标准答案:D

知识点解析:要打印出A,输出格式应该是%的所以选项D错误;另外,字符是

一种特殊的整型数,对应的是其ASCII码数值,所以选项A,B,C正确。

33、关于C语言程序格式的叙述中正确的是()。

A、用C语言编写的程序只能放在一个程序文件中

B、C程序书写格式严格,要求一行内只能写一个语句

C、C程序中的注释只能出现在程序的开始位置和语句的后面

D、C程序书写格式自由,一个语句可以写在多行上

标准答案:D

知识点解析:因为选项B和D是互反选项,所以答案定是其中之一,C语言的一

个语句可以写在多行上,所以D正确;A的错误在于C语言可以通过include语句

将其他文件的内容引入当前文件,C项的错误在于C语言的注释可以出现在程序中

间位置,当然也可以出现在语句前面。

34>有以3程序#includeVstdio.h>main。{chara='H';a=(a>='A'&&aV

=Z):(a+32):a;printf(H%c\n",a);}程序运行后的输出结果是

A、H

B、h

C、A

D、a

标准答案:B

知识点解析:条件运算符构成的选择结构的一般形式为:表达式1:表达式2:表

达式3。其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达

式的值,否则以表达式2的值作为整个条件表达式的值。该题目中首先给字符变量

a赋值为,H"语句a=(a>=\V&&aV=,Z)(a+32):a;即将大写字母变为小写字

母。因此B选项正确。

35、与以下语句等价的语句是()。if(a<b)if(a<c)k=a;elsek=c;elseif(b<

c)k=b;elsek=c;

标准答案:B

知识点解析:if(expl)exp2elseexp3可以写成问号表达式,(expl)?exp2:exp3,所

以选项B正确。

36以下程序中C的二进制值是()。chara=2,b=4,c;c=a"b>>2

A、00000011

B、00010100

C、00011100

D、00011000

标准答案:A

知识点解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>

>2后为00000001,a=2的二进制为00000010,两者异或为00000011。

37、以卜.关于逻辑运算符两侧运算对象的叙述中正确的是

A、只能是整数0或1

B、只能是整数。或非0整数

C、可以是结构体类型的数据

D、可以是任意合法的表达式

标准答案:D

知识点解析:与运算符(&&)和或运算符(II)均为双目运算符,具有左结合性。非运

算符⑴为单目运算符,具有右结合性。只要是合法的表达式,都可以作为逻辑运算

表达的运算表达式。因此可知选项A,B,C错误。答案为D选项。

38、下列关于逻辑运算等两侧运算对象的叙述中正确的是()。

A、只能是整数。或1

B、只能是整数。或非0整数

C、可以是结构体类型的数据

D、可以是任意合法的表达式

标准答案:D

知识点解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的

运算结果或者为1(“真”),或者为0(“假

39、下列有关数据库的描述,正确的是()。

A、数据库设计是指设计数据库管理系统

B、数据库技术的根本目标是要解决数据共享的问逾

C、数据库是一个独立的系统,不需要操作系统的支持

D、数据库系统中,数据的物理结构必须与逻辑结构一致

标准答案:B

知识点解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模

型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据

的共享性,使多个用户能够同时访问数据库中的数据:减小数据的冗余,以提高数

据的一致性和完整性;提供数据与应用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论