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

2018-12-15 17:52

y=3。

(24)B 【解析】二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。 (25)D 【解析】 C语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数组之中;②用字符指针指向字符串, 然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时, 根据数组的类型转换规则, 将其转换成字符指针。

本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

(26)D 【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。

(27)B 【解析】 scanf()语句用\空格\区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

(28)A 【解析】带参数的宏定义命令行形式如下:#define 宏名(形参表) 替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为 (a)*(b)/(c)。

(29)D 【解析】结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。 (30)A 【解析】首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据\然后 fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了{4,5,6,4,5,6}。 (31)C 【解析】在for(i=0;i<12;i++) c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。 (32)D 【解析】在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

(33)C 【解析】本题考查的重点是拷贝字符串──使用strcpy()函数,该函数的调用方式是:strcpy(字符数组, 字符串),其中\字符串\可以是字符串常量,也可以是字符数组。函数的功能是:将\字符串\完整地复制到\字符数组\中,字符数组中原有的内容被覆盖。

使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\\0'一起复制;②不能用赋值运算符\将一个字符串直接赋值给一个字符数组,只能用strcpy( )函数处理。

另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组, 字符串)。

功能是把\字符串\连接到\字符数组\中的字符串尾端,并存储于\字符数组\中。\字符数组\中原来的结束标志,被\字符串\的第一个字符覆盖,而\字符串\在操作中未被修改。

使用该函数时注意:①由于没有边界检查,编程者要注意保证\字符数组\定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;②连接前两个字符串都有结束标志'\\0',连接后\字符数组\中存储的字符串的结束标志'\\0'被舍弃,只在目标串的最后保留一个'\\0'。

(34)D 【解析】该程序先判断a[i]

(35)A 【解析】本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。

(36)A 【解析】本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。 (37)B 【解析】在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。

(38)C 【解析】 ^是按位异或运算,如果对应位不同则结果为1,相同则为0。

(39)D 【解析】在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。

(40)D 【解析】本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。 二、选择题

(1)【1】需求规格说明书【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。 (2)【2】输出结果【解析】测试用例(Text Case)是为测试设计的数据。测试用例由测试输入数据和与之对应的预期输出结果两部分组成。 (3)【3】存储结构【解析】数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。

(4)【4】 19 【解析】在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

(5)【5】数据模型【解析】数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。

(6)【6】 1 【解析】字符空格的ASCII码不为0,所以本题中表达式?!c?的值为0, b=0&&1的结果显然为0。

(7)【7】 3 【解析】本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

(8)【8】 b=I+1 【解析】本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是1 10之间的偶数之和; b的值是1 11之间的奇数和,但在输出b值时,c去掉多加的11,即为1 10之间的奇数之和。

(9)【9】 a[0][I] 【10】 b[I][0] 【解析】 b[i][N-1]= a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,?b[I][0]=a[N-1][I] 实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。 (10)【11】 3 5 【解析】函数swap(int *a,int *b)的功能是实现*a和?*b?中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int *a,int *b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为3 5。

(11)【12】 a b c d e f g l k j I h 【解析】本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。

(12)【13】 4 【解析】在主函数中,语句p=a;p++使用指针p指向数组a[1],所以输出结果为4。

(13)【14】 ->【解析】若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。

(14)【15】 1,2,3,0,0,1,2,3,0,0, 【解析】本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为\。 一、选择题

在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)软件生命周期中花费费用最多的阶段是 A)详细设计 B)软件编码 C)软件

测试 D)软件维护

(2)为了提高测试的效率,应该

A)随机选取测试数据 B)取一切可能

的输入数据作为测试数据 C)在完成编码

以后制定软件的测试计划 D)集

中对付那些错误群集的程序

(3)以下不是面向对象思想中的主要特征的

A)多态 B)继承 C)封装

D)垃圾回收

(4)下列叙述中,不符合良好程序设计风格要

求的是

A)程序的效率第一,清晰第二 B)

程序的可读性好 C)程序中要有必要的注

释 D)输入数据前要有提示信息

(5)软件设计包括软件的结构、数据接口和

过程设计,其中软件的过程设计是指

A)模块间的关系 B)系统结构部件转换

成软件的过程描述 C)软件层次结构 D)软件开发过程

(6)数据处理的最小单位是

A)数据 B)数据元素 C)数据

项 D)数据结构

(7)假设线性表的长度为n,则在最坏情况下,

冒泡排序需要的比较次数为

A)log2n B)n2 C)O(n1..5) D)n(n-1)/2

(8)在深度为5的满二叉树中,叶子结点的个

数为

A)32 B)31 C)16 D)15

(9)数据库系统的核心是

A)数据库 B)数据库管理系统

C)模拟模型 D)软件工程

(10)一个关系中属性个数为1时,称此关系

A)对应关系 B)单一关系 C)一元关系 D)二元关系 (11)下面各选项中,均是C语言合法标识符的选项组是 A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32

(12)可在C程序中用作用户标识符的一组标识符是 A)and B)Date C)Hi D)case _2007 y-m-d Dr.Tom Bigl (13)以下对C语言函数的有关描述中,正确的是 A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B)C函数既可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数 D)函数必须有返回值,返回值类型不定 (14)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元 (15)现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为:

A)int B)double C)float D)char (16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是 A)均占4个字节 B)根据数据的大小来决定所占内存的字节数 系统决定 C) 由用户自己定义 D)由C语言编译

(17)有以下程序段 int j;float y;char name[50]; scanf(\ 当 执 行

上述程序段,从键盘上输入55566 7777abc后,y的值为 A)55566.0 B)566.0 C)7777.0 D)566777.0 (18)若变量已正确定义,有以下程序段 i=0;

do printf(\

printf(\ 其输出结果是 A)0,0 B)0,1 C)1,1 D)程序进入无限循环 (19)下列程序的运行结果是

#include \

main()

{ int x=-9,y=5,z=8; if(x

if(y<0)z=0; else z+=1; printf(\

A)6 B)7 C)8 D)9 (20)若程序执行时的输入数据是\则下述程序的输出结果是 #include void main() { int cs;

while((cs=getchar())!=; '\\n') {switch(cs-'2') { case 0

case 1: putchar(cs+4); case 2: putchar(cs+4); break; case 3: putchar(cs+3); default: putchar(cs+2); } } } A)668977 B)668966 C)6677877 D)6688766

(21)以下程序的输出结果是 main()

{ int a,i;a=0; for(i=1;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1:

case 2:a+=3; default:a+=5; } }printf(\ A)31 B)13 C)10 D)20

(22)现有如下程序段 #include \ main() { int k[30]={12,324,45,6,768,98,21,34,453,456}; int count=0,i=0; while(k[i])

{ if(k[i]%2==0||k[i]%5==0)count++; i++; }

printf(\ 则程序段的输出结果为

A)7,8 B)8,8 C)7,10 D)8,10

(23)若有以下程序 #include int a[]={2,4,6,8}; main() { int i; int *p=a;

for(i=0;i<4;i++)a[i]=*p; printf(\

上面程序的输出结果是

A)6 B)8 C)4 D)2 (24)有以下程序 #include main()

{ int i,j,m=55; for(i=1;i<=3;i++)

for(j=3;j<=i;j++)m=m%j; printf(\ }

程序的运行结果是

A)0 B)1 C)2 D)3 (25)已知字符′A′的ASCII码值是65,字符变量cl的值是′A′,c2 的值是′D′。执行语句printf(\后,输出结果是 A)A,B B)A,68 C)65,66 D)65,68 (26)下列程序是用来判断数组中特定元素的位置所在的。 #include #include

int fun(int *s, int t, int *k) { int i; *k=0;

for(i=0;i

fun(a, 10, &k);

printf(\

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

A)7,431 B)6 C)980 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]);} i=strlen(p); printf(\则程序段的输出结果是 A)18 B)19 C)20 D)21 (32)若有定义: char *st= \下列程序段中正确的是

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 a[]={\ 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;


2013年3月份全国计算机等级考试二级C语言_笔试 上机题库(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福建省厦门六中2012届高三二轮复习综合测试(4)理综试题

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

马上注册会员

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