2011年3月份全国计算机等级考试二级C语言题库(笔试 机试)

2026/4/24 10:47:45

fun(a, 10, &k);

printf(\

如果输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为

A)7,431 B)6 i=strlen(p); printf(\则程序段的输出结果是 A)18 B)19

C)980 中正确的是

C)20 D)21

(32)若有定义: char *st= \下列程序段

D)6,980

(27)下面程序的文件名为t.exe,在DOS下输入的命令行参数为:t to meet me<回车> 则程序输出的结果是 #include \ main(argc,argv) int argc;char *argv[]; { int i;

printf(\

A)3 B)4 C)2 D)以上答案都不正确

(28)有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5]; 则b的值是

A)5 B)6 C)9 D)8

(29)以下叙述中错误的是 A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值 D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

(30)下面程序的输出结果是 #include main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(\ A)0 B)1 C)10 D)9

(31)有下面程序段

#include \ #include \ main()

{ char a[3][20]={{\ char k[100]={0},*p=k; int i;

for(i=0;i<3;i++) { p=strcat(p,a[i]);}

A)char a[11], *p; strcpy(p=a+1,&st[4]); B)char a[11]; strcpy(++a, st);

C)char a[11]; strcpy(a, st); D)char a[], *p; strcpy(p=&a[1],st+2); (33)有以下程序 #include int fun(char s[]) { int n=0;

while(*s<=′9′&&*s>=′0′) {n=10*n+*s-′0′;s++;} return(n); } main()

{ char s[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′}; printf(\ }

程序的运行结果是 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

25

a[]={\ C)char (1)软件定义时期主要包括 【1】 和需求分析两

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 C)321 D)以上答案都不正确 二、填空题

请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。

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

{printf(\

(8)有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1)); printf(\

请填空,使下面程序段的功能与之完全相同 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(\-′a′+′A′); printf(\

}

(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

26

#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为

27

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中存入的是命令行中字符串的

28


2011年3月份全国计算机等级考试二级C语言题库(笔试 机试).doc 将本文的Word文档下载到电脑
搜索更多关于: 2011年3月份全国计算机等级考试二级C语言题库(笔试 机试 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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