77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2019-03-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

程序的运行结果是

A)9 B)61490 C)61 D)5 (34)设有定义:char

p[]={′1′,′2′,′3′},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是

A)sizeof(p) B)sizeof(char)

C)sizeof(*q) D)sizeof(p[0]) (35)有以下函数 int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); }

以下关于aaa函数的功能的叙述正确的是

A)求字符串s的长度 B)比较两

个串的大小 C)将串s复制到串t

D)求字符串s所占字节数

(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是 A)scanf() B)getchar()

C)gets() D)getc()

(37)下列选项中错误的说明语句是

A)char

a[]={′t′,′o′,′y′,′o′,′u′,′\\0′}; B)char a[]={\\\0\

C)char a[]=\

D)char a[]=′toyou\\0′; (38)以下程序的输出结果是 int f()

{ static int i=0; int s=1;

s+=i; i++; return s; } main() { int i,a=0;

for(i=0;i<5;i++)a+=f(); printf(\

A)20 B)24

C)25

D)15

(39)下列程序的输出结果是 #include \#define M(x,y) x%y main()

{ int a,m=12,n=100; a=M(n,m);

printf(\ A)2 B)3 C)4

D)5

(40)假定当前盘符下有两个如下文本文

件:

文件名

a1.txt

a2.txt

内容 123# 321#

则下面程序段执行后的结果为 #include \

void fc(FILE *p)

{ char c;

while((c=fgetc(p))!=′#′)putchar(c);} main() { FILE *fp;

fp=fopen(\fc(fp); fclose(fp);

fp=fopen(\fc(fp); fclose(fp); putchar('\\n');} A)123321 B)123 {printf(\(8)有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

C)321 printf(\

D)以上答案都不正确 二、填空题

请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。 (1)软件定义时期主要包括 【1】 和需求分析两个阶段。

(2)软件维护活动包括以下几类:改正性维护、适应性维护、 【2】 维护和预防性维护。

(3)数据的逻辑结构有线性结构和 【3】两大类。

(4)某二叉树中度为2的结点有n个,则

该二叉树中有 【4】 个叶子结点。

(5)在ER图中,矩形表示? 【5】 。

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

是 【6】 。 #include \main() { int x,y,z; x=1;y=2;z=3;

if(x>y)if(x>z)printf(\else printf(\printf(\

(7)以下程序的输出结果是 【7】 。 main() { int y=9; for(; y>0; y--) if (y%3==0)

请填空,使下面程序段的功能与之完全相同 s=1.0;k=1;

while(? 【8】

?){s=s+1.0/(k*(k+1));? 【9】 ?;} printf(\

(9)设有以下定义和语句,则*(*(p+2)+1)的值为 【10】 。

int a[3][2]={10, 20, 30, 40, 50, 60},

(*p)[2]; p=a;

(10)以下程序的输出结果是? 【11】 ?。

#include

main() { int i;

for(i=′a′;i<′f′;i++,i++)printf(\c\′a′+′A′); printf(\}

(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。 #include void f(int x[],int n) { int p0,p1,i,j,t,m; i=j=x[0]; p0=p1=0; for(m=0;m

{ if(x[m]>i) {i=x[m];p0=m;} else if(x[m]

t=x[p0];x[p0]=x[n-1];x[n-1]=t; t=x[p1];x[p1]=? 【12】 ; 【13】 =t; } main()

{ int a[10],u;

for(u=0;u<10;u++) scanf(\f(a,10);

for(u=0;u<10;u++) printf(\printf(\}

(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

int mystrlen(char *str) { int I;

for(I=0; 【14】 != '\\n';I++); return(I); }

(13)阅读下列程序,则程序的输出结果为【15】 。 #include \struct ty { int data; char c; }; main()

{ struct ty a={30,′x′}; fun(a);

printf(\

fun(struct ty b) { b.data=20; b.c=′y′; }一、选择题

1)D 【解析】 软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 (2)D 【解析】 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。 (3)D 【解析】 面向对象思想中的三个主要特征是:封装性、继承性和多态性。 (4)A 【解析】 当今主导的程序设计风格是\清晰第一,效率第二\的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。

(5)B 【解析】 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。 (6)C 【解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

(7)D 【解析】 假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。 (8)C 【解析】 满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个

结点,且深度为m的满二叉树有2m-1个结点。

(9)B 【解析】 数据库管理系统

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

(10)C 【解析】 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。

(11)B 【解析】 合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;选项C)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。

(12)A 【解析】 在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

(13)A 【解析】 C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不用有返回值,若有返回值,则返回值类型必确定。

(14)D 【解析】 在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。 (15)B 【解析】 双目运算中两边运算量类型转换规律:

运算数1运算数2转换结果类型 短整型 长整型 短整型->长整型 整型 长整型

整型->长整型

字符型 整型 字符型->整型

有符号整型 无符号整型 有符号整型

->无符号整型 整型 浮点型

整型->浮点型

在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。 (16)D 【解析】 在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。

(17)B 【解析】 本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为\即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。

(18)B 【解析】 对于do?while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值\再接着判断表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值\。

(19)D 【解析】 if?else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x=0时,z=z+1。

(20)A 【解析】 本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

(21)A 【解析】 本题考查用于多分支选择的switch语句, 其一般形式为: switch(表达式) {

case常量表达式1: 语句1; case常量表达式2: 语句2; ?

case常量表达式n: 语句n; default : 语句n+1; }

其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。

(22)D 【解析】 在C语言中,定义一维数组的语句一般形式如下: 类型名 数组名[常量表达式]; 一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计算有多少个数组元素。 (23)D 【解析】 在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

(24)B 【解析】 本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为\?j<=i?\j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

(25)C 【解析】 在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符'A'和'D'的ASCII码值分别为65和68。

(26)D 【解析】 本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。 (27)B 【解析】 argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

(28)C 【解析】 p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。

29)C 【解析】 函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储

单元地址,而不能是一个整数,选项C)错误。 (30)C 【解析】 此题考查了指针引用一维数组元素的方法。*p+9因为运算符\的优先级高于\所以输出结果为p指向的元素1,然后加9,值为10。

(31)B 【解析】 字符串连接函数

strcat的调用形式如下:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

(32)A 【解析】 本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1=?\果想把\这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(str1,\或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给

str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,\字符数组1\必须写成数组名形式,如(str1),\字符串2\可以

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库A2012国家c语言笔试套题(8)在线全文阅读。

A2012国家c语言笔试套题(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/554443.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: