A2012国家c语言笔试套题(4)

2019-03-28 22:22

则z的二进制值是

A)00010100 B)00011011 C)00011100 D)00011000

(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A)auto和register B)extern和register C)auto和static D)static和register (40)设有定义语句int (?*f)(int);,则以下叙述正确的是

A)f是基类型为int的指针变量 B)f是指向函数的指针变量,该函数具有一个int类型的形参

C)f是指向int类型一维数组的指针变量 D)f是函数名,该函数的返回值是基类型为int类型的地址

二、填空题

请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。 (1)测试用例包括输入值集和 【1】 值集。

(2)在树形结构中,树根结点没有 【2】 。

(3)数据结构分为逻辑结构与存储结构,线性链表属于 【3】 。

(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体\项目主管\

与实体\项目\的联系属于 【4】 的联系。(5)数据库设计分为以下6个设计阶段:需求分析阶段、 【5】 、逻辑设计阶段、物理设计阶段、实施阶段、运行和维

护阶段。

(6)阅读下面程序段,则执行后输出的结

果是 【6】 。 #include \main()

{ char fun(char,int); char a=′A′; int b=13; a=fun(a,b); putchar(a);}

char fun(char a,int b) { char k; k=a+b; return k;}

(7)函数fun的返回值是 【7】 fun(char *a,char *b) { int num=0,n=0;

while(*(a+num)!='\\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;} return num; }

(8)以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是:

2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

删除后,数组中的内容应该是:

2 3 4 5 6 7 8 9 10。

请填空。 #include #define N 80

int fun(int a[], int n) { int i,j=1; for(i=1;i

if(a[j-1] 【8】 a[i]) a[j++]=a[i]; 【9】 ; } main()

{ int

a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;

printf(\ for(i=0; i

i++)printf(\ n=fun(a,n);

printf(\\\n\

for(i=0; i

i++)printf(\printf(\}

(9)以下程序的运行结果是 【10】 。#include main()

{ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y)

{ case 0:a++; break; case 1: b++; break;

}

case 2:a++; b++; break; case 3:a++; b++; }

printf(\

}

(10)以下程序的输出结果是 【11】 。 fun (int x,int y,int z) { z =x*x+y*y;} main () { int a=31; fun (6,3,a) printf (\}

(11)函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s

My_cmp(char*s,char*t) { while (*s == *t) { if (*s == ′ \\0)return0; ++s; ++t;

} return 【12】 ; }

(12)以下程序的输出结果是 【13】 。 void reverse(int a[],int n) { int i,t;

for(i=0;i

{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;} } main()

{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8);

for(i=6;i<10;i++)s+=b[i]; printf(\

}

(13)以下说明语句中, 【14】 是结构体类型名。 typedef struct { int n; char ch[8]; } PER;

(14)以下程序的作用是:从名为

filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。 #include main()

{FILE ?*fp; char ch; fp=fopen( 【15】 ); ch=fgetc(fp);

while(!feof(fp)) { putchar(ch); ch=fgetc(fp); } putchar('\\n');fclose(fp); }

一、选择题

(1)C 【解析】 程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。

(2)C 【解析】 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们具有抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。

(3)C 【解析】 模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的

复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。

(4)D 【解析】 软件需求规格说明书(SRS,Software Requirement

Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用:① 便于用户、开发人员进行理解和交流;② 反映出用户问题的结构,可以作为软件开发工作的基础和依据;③ 作为确认测试和验收的依据。 (5)C 【解析】 算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

(6)B 【解析】 堆排序的比较次数为nlog2n;直接插入排序的比较次数为n(n-1)/2;快速排序的比较次数为nlog2n。当数据表A中每个元素

(7)B 【解析】 栈操作原则上\后进先出\栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈,所以出栈时一定是先出D,再出C,最后出A。

(8)A 【解析】 数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。

(9)A 【解析】 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。

(10)C 【解析】 \选课SC\表是 \学生S\表和 \课程C\表的映射表,主键是两个表主键的组合。

(11)D 【解析】 在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以

输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

(12)B 【解析】 C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。

(13)B 【解析】 C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。

(14)A 【解析】 在C语言中,\运算符两侧的运算数必须是整型。

(15)A 【解析】 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和D)错误。\运算符两侧都应当是整型数据,选项B)错误。

(16)D 【解析】 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。 (17)B 【解析】 C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。

(18)B 【解析】 满足表达式(c>=2&&c<=6)的整型变量c的值是

2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为\真\。

(19)B 【解析】 条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非

0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值

就是整个条件表达式的值,注意++、--的用法。

(20)B 【解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。 (21)B 【解析】 本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。

(22)B 【解析】 本题中,\表示逻辑非运算符,\表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。 (23)C 【解析】 对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。 (24)A 【解析】 数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。 (25)C 【解析】 选项A)char

*a;*a=\应改为?a=china?;,选项B)应该是char str[6];D)项表述方法有错误。(26)D 【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。

(27)D 【解析】 在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的表达式。 (28)B 【解析】 根据宏替换的替换规则,我们可

知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。

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

(30)D 【解析】 将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。

(31)D 【解析】 通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出数组范围,注意,数组的下标是从0开始的。

(32)C 【解析】 函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组

a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组

a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组

a[12]={5,6,7,8,9,0,1,2,3,4}。

(33)A 【解析】 本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用\留下\字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\\0'。

(34)A 【解析】 本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为

1+2+3+4+5+6+7+8+9+10=55。

(35)C 【解析】 本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,

其对应的整数值就是ACSII字符集中该字

符的序号,即&*s中有几个字符就输出几个*。(36)B 【解析】 结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。 (37)C 【解析】 这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。

(38)B 【解析】 本题考查两个位运算符。

按位异或运算符\是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。 左移运算符\是双目运算符,其功能把\左边的运算数的各二进位全部左移若干位,由\右边的数指定移动的位数,高位丢弃,低位补0,并且\运算符的优先级于\。

(39)A 【解析】 在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。

(40)B 【解析】 本题考查的是指向函数的指针。语句 int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。 二、选择题

(1)【1】 输出 【解析】 软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。

(2)【2】 前件 【解析】 在树形结构中,每一个结点只有一个前件,称为父结点;没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点。

(3)【3】 存储结构 【解析】 数据的逻辑结构是指反映数据元素之间逻辑关系

的数据结构;数据的存储结构是指数据的逻

辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后

件关系的信息。


A2012国家c语言笔试套题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第2章正弦交流电路习题解答

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: