计算机二级c语言编程题库及答案(计算机二级c语言考试真题编程题)

http://www.itjxue.com  2023-03-05 00:19  来源:未知  点击次数: 

计算机二级C语言选择题及答案(2)

}

printf("%d\n",num);

}

程序执行后的输m结果是()。

A.35

B.37

C.39

D.3975

32.以下程序的'输出结果是()。

main()

{char st[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.9 9

B.5 20

C.13 20

D.20 20

33.若有以下的定义:‘int t[3][2];”,能正确表示t数组元素地址的表达式是()。

A.t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

34.函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是()。

A.文件开始

B.文件末尾

C.文件当前位置

D.以上都不对

35.下述程序的输出结果是()。

#include

main()

{ int i;

for(i=l;i=10;i++)

{if(i*i=20)(i*i=100))

break;

}

printf("%d\n",i*i);

}

A.49

B.36

C.25

D.64

36.若有定义“int b[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值

B.数组元素b[6]的地址

C.数组元素b[7]的地址

D.数组元素b[o]的值加上6

37.设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0:

for(i=1;i=n;i++)f*=i:

B.F=1:

for(i=l;i2n;i++)f*=i:

C.f=l:

for(i=n;i1;i++)f*=i:

D.f=1;

for(i=n;i=2;i--)f*=i:

38.下述程序执行的输出结果是()。

#include

main()

{ char a[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=’’;

printf("%s\n",a):

}

A.areyou

B.you

C.are

D.

39.设x=011050,则x=x01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

40.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

【答案与解析】

1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。

4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。

5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

6.C。【解析】面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。

8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。

9.A。【解析】①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。

10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。

12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

13.D。【解析】本题考查逻辑运算符的使用。当“”的两个运算对象都是逻辑1时,表达式返回值才是1;“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x14.C。【解析】第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

15.C。【解析】函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a++,b++,aq b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。

17.A。【解析】当x为1时,执行case 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。

18.D。【解析】本题考梦自增运算符“++”、逻辑与运算符“”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

19.A。【解析】本题考查switch语句。当i一1时,执行case 1,因为没有遇到break语句,所以依次往下运行,“a=a+ 2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3= 10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

21.A。【解析】循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。

22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

23.A。【解析】通过地址来引用数组元素的方法有下列5种:

(1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+i);(4)* (a[i][j]);(5)(aE0][0]q-3*i+j)。故A正确。

24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。

25.D。【解析】由题目ee线性链表的定义可知,要将q 和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r- next=q,这时r指向的节点为q;p-next r,这时p指向的节点为r;q-next=r-next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

27.C。【解析】子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.O。

28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)

=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)

=10+9++8+7+6+5+fun(4)

=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)

=10+9++8+7+6+5+4+3+2+fun(1)

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

计算机二级考试(江西考区)试题c语言及答案

2010年3月全国计算机等级考试二级C语言笔试真题及参考答案一、选择题

(1)下列叙述中正确的是

A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为n

B)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)

C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)

D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指

A)算法的执行时间

B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是

A)编辑软件

B)操作系统

C)教务管理系统

D)浏览器(4)软件(程序)调试的任务是

A)诊断和改正程序中的错误

B)尽可能多地发现程序中的错误

C)发现并改正程序中的所有错误

D)确定程序中错误的性质(5)数据流程图(DFD图)是

A)软件概要设计的工具

B)软件详细设计的工具

C)结构化方法的需求分析工具

D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于

A)定义阶段

B)开发阶段

C)维护阶段

D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是

A)数据定义语言

B)数据管理语言

C)数据操纵语言

D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是

A)文件

B)数据库

C)字段

D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的

A)需求分析阶段

B)逻辑设计阶段

C)概念设计阶段

D)物理设计阶段(10)有两个关系R和T如下:

则由关系K得到关系T的操作是

A)选择

B)投影

C)交

D)并(11)以下叙述正确的是

A)C语言程序是由过程和函数组成的

B)C语言函数可以嵌套调用,例如:fun(fun(x))

C)C语言函数不可以单独编译

D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)以下关于C语言的叙述中正确的是

A)C语言中的注释不可以夹在变量名或关键字的中间

B)C语言中的变量可以在使用之前的任何位置进行定义

C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标识符中,不合法的是

A)_1

B)AaBc

C)a_b

D)a-b(14)若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是

A)a=a++,i++;

B)i=(a+k)=(i+k);

C)i=a%11;

D)i=!a;(15)有以下程序

#includestdio.h

main()

{ char a,b,c,d;

scanf(“%c%c”,a,b);

c=getchar(); d=getchar();

printf(“%c%c%c%c\n”,a,b,c,d);

}

当执行程序时,按下列方式输入数据(从第1列开始,CR代表回车,注意:回车也是一个字符)

12CR

34CR

则输出结果是

A)1234

B)12

C)12

3

D)12

34(16)以i关于C语言数据类型使用的叙述中错误的是

A)若要准确无误差的表示自然数,应使用整数类型

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

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

D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是

A)1

B)0

C)2

D)不知道a的值,不能确定(18)以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是

A)switch(a)

{case:a=b;break;brdefault:a++;br}brB)switch(a==1)br{case 0:a=b;break;brcase 1:a++;br}

C)switch(a)

{default:a++;break;brcase 1:a=b;br}

D)switch(a==1)

{case 1:a=b;break;brcase 0:a++;br}(19)有如下嵌套的if语句

if (ab)

if(ac)k=a;

else k=c;

else

if(bc) k=b;

else k=c;

以下选项中与上述if语句等价的语句是

A)k=(a<b)?a:b;k=(b<c)?b:c;

B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);

C)k=(a<b)?((a<c)?a:):((b<c)?b:c);

D)k=(a<b)?a:b;k=(a<c)?a:c;(20)有以下程序

#include<s七dio.h>

main()

{in i,j,m=1;

for(i=1;i<3;i++)

{for(j=3;j>O;j--)

{if(i*j)>3)break;brm=i*j;br}

}

printf("m=%d\n",m);

程序运行后的输出结果是

A)m=6

B)m=2

C)m=4

D)m=5(21)有以下程序

#include(stdio.h>

main()

{int a=l;b=2;

for(;a<8;a++) {b+=a;a+=2;}

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是

A)9,18

B)8,11

C)7,11

D)10,14(22)有以下程序,其中k的初值为八进制数

#include stdio.h

main()

{int k=011;

printf("%d\n",k++);

程序运行后的输出结果是

A)12

B)11

C)10

D)9(23)下列语句组中,正确的是

A)char *s;s="Olympic";

B)char s[7];s="Olympic";

C)char *s;s={"Olympic"};

D)char s[7];s={"Olympic"};(24)以下关于return语句的叙述中正确的是

A)一个自定义函数中必须有一条return语句

B)一个自定义函数中可以根据不同情况设置多条return语句

C)定义成void类型的函数中可以有带返回值的return语句

D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能正确定义数组的语句是

A)int num[0..2008];

B)int num[];

C)int N=2008;

int num[N];

D)#define N 2008

int num[N];(26)有以下程序

#include stdio.h

void fun(char *c,int d)

{*c=*c+1;d=d+1;

printf("%c,%c,",*c,d);

main()

{char b='a',a='A';

fun(b,a);printf("%e,%e\n",b,a);

程序运行后的输出结果是

A)b,B,b,A

B)b,B,B,A

C)a,B,B,a

D)a,B,a,B(27)若有定义int(*Pt)[3];,则下列说法正确的是

A)定义了基类型为int的三个指针变量

B)定义了基类型为int的具有三个元素的指针数组pt

C)定义了一个名为*pt、具有三个元素的整型数组

D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组(28)设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是

A)(*s)[3]

B)*(s+3)

C)*s[3]

D)*s+3(29)有以下程序

#include(stdio.h)

main()

{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;

for(i=0;i<5;i++) s=s+a[b[i]]);

printf("%d\n", s);

}

程序运行后的输出结果是

A)6

B)10

C)11

D)15(30)有以下程序

#include stdio.h

main()

{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;

for(i=0;i3;i++)

for(j=ij=1;j++) t+=b[i][b[j][i]];

printf("%d\n",t);

程序运行后的输出结果是

A)1

B)3

C)4

D)9(31)若有以下定义和语句.......这是全国2010全国c语言考试的部分题目,楼主需要的话可以自己去下载转自:酷8学习网

c语言二级考试题及答案

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计

(考试时间90分钟,满分100分)

一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)

(1)下列关于栈叙述正确的是

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

(2)下列叙述中正确的是

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划 B)软件详细设计说明书

C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构 B)GOTO跳转

C)选择(分支)结构 D)重复(循环)结构

(6)下面描述中错误的是

A)系统总体结构图支持软件系统的详细设计

B)软件设计是将软件需求转换为软件表示的过程

C)数据结构与数据库设计是软件设计的任务之一

D)PAD图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是

A)数据定义语言

B)数据管理语言

C)数据操纵语言

D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

A)1:1联系 B)1:m联系

C)m:1联系 D)m:n联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是

A)自然连接 B)交 C)除 D)并

(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是

A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是

A)C语言程序仅可以编译执行

B)C语言程序仅可以解释执行

C)C语言程序既可以编译执行又可以解释执行

D)以上说法都不对

(12)以下叙述中错误的是

A)C语言的可执行程序是由一系列机器指令构成的

B)用C语言编写的源程序不能直接在计算机上运行

C)通过编译得到的二进制目标程序需要连接才可以运行

D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是

A).1e0 B)3.0e0.2

C)E9 D)9.12E

(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是

A)a=(b=4)=3; B)a=b=c+1;

C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段

char name[20];

int num;

scanf("name=%s num=%d",name;num);

当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name的值为

A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

A)必须是逻辑值 B)必须是整数值

C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

#include

main()

{ int x=011;

printf("%d\n",++x);

}

程序运行后的输出结果是

A)12 B)11 C)10 D)9

 

(19)有以下程序

#include

main()

{ int s;

scanf("%d",s);

while(s0)

{ switch(s)

{ case1:printf("%d",s+5);

case2:printf("%d",s+4); break;

case3:printf("%d",s+3);

default:printf("%d",s+1);break;

}

scanf("%d",s);

}

}

运行时,若输入1 2 3 4 5 0回车,则输出结果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n;

for(i=0;i8;i++)

{ n=rand()%5;

switch (n)

{ case 1:

case 3:printf("%d\n",n); break;

case 2:

case 4:printf("%d\n",n); continue;

case 0:exit(0);

}

printf("%d\n",n);

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行

 

(21)有以下程序

#include

main()

{ char s[]="012xy\08s34f4w2";

int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]='0's[i]='9') n++;

printf("%d\n",n);

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

for(i=0,k=-1;k=1;k++) printf("*****\n");

下面关于语句执行情况的叙述中正确的是

A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环

(23)有以下程序

#include

main()

{ char b,c; int i;

b='a'; c='A';

for(i=0;i6;i++)

{ if(i%2) putchar(i+b);

else putchar(i+c);

} printf("\n");

}

程序运行后的输出结果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是

A)scanf("%f",x[6]); B)scanf("%lf",*(x+6));

C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(说明:字母A的ASCII码值是65)

#include

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s);

s++;

}

}

main()

{ char a[]="BYTE";

fun(a); printf("\n");

}

程序运行后的输出结果是

A) BY B) BT C) YT D) YE

(26)有以下程序段

#include

main()

{ …

while( getchar()!='\n');

}

以下叙述中正确的是

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

C)当执行此while语句时,只有按回车键程序才能继续执行

D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

#include

main()

{ int x=1,y=0;

if(!x) y++;

else if(x==0)

if (x) y+=2;

else y+=3;

printf("%d\n",y);

}

程序运行后的输出结果是

A)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是

A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序

#include

void fun(char *c)

{ while(*c)

{ if(*c='a'*c='z') *c=*c-('a'-'A');

c++;

}

}

main()

{ char s[81];

gets(s); fun(s); puts(s):

}

当执行程序时从键盘上输入Hello Beijing回车,则程序的输出结果是

A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include

#define N 10

void fun(int x[N])

{ int i=0;

while(i

}

在程序中下划线处应填入的是

A)x+i B)x[i+1]C)x+(i++) D)x[++i]

(31)有以下程序

#include

main()

{ char a[30],b[30];

scanf("%s",a);

gets(b);

printf("%s\n %s\n",a,b);

}

程序运行时若输入:

how are you? I am fine回车

则输出结果是

A)how are you? B)how I am fine are you? I am fine

C)how are you? I am fine D)row are you?

(32)设有如下函数定义

int fun(int k)

{ if (k1) return 0;

else if(k==1) return 1;

else return fun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

A)2 B)3 C)4 D)5

(33)有以下程序

#include

int fun (int x,int y)

{ if (x!=y) return ((x+y);2);

else return (x);

}

main()

{ int a=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

}

程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序

#include

int fun()

{ static int x=1;

x*=2;

return x;

}

main()

{ int i,s=1;

for(i=1;i=3;i++) s*=fun();

printf("%d\n",s);

}

程序运行后的输出结果是 A)0 B)10 C)30 D)64

(35)有以下程序

#include

#define S(x) 4*(x)*x+1

main()

{ int k=5,j=2;

printf("%d\n",S(k+j));

}

程序运行后的输出结果是 A)197 B)143 C)33 D)28

(36)设有定义:struct {charmark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是

A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序

#include

struct ord

{ int x,y;}dt[2]={1,2,3,4};

main()

{

struct ord *p=dt;

printf("%d,",++(p-x));printf("%d\n",++(p-y));

}

程序运行后的输出结果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

#include

struct S

{ int a,b;}data[2]={10,100,20,200};

main()

{ struct S p=data[1];

printf("%d\n",++(p.a));

}

程序运行后的输出结果是 A)10 B)11 C)20 D)21

(39)有以下程序

#include

main()

{ unsigned char a=8,c;

c=a3;

printf("%d\n",c);

}

程序运行后的输出结果是 A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是

A)写操作结束后可以从头开始读 B)只能写不能读

C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

(6)以下程序运行后的输出结果是 【6】。

#include

main()

{ int a;

a=(int)((double)(3/2)+0.5+(int)1.99*2);

printf("%d\n",a);

}

(7)有以下程序

#include

main()

{ int x;

scanf("%d",x);

if(x15) printf("%d",x-5);

if(x10) printf("%d",x);

if(x5) printf("%d\n",x+5);

}

若程序运行时从键盘输入12回车,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)

#include

main()

{ char c1,c2;

scanf("%d",c1);

c2=c1+9;

printf("%c%c\n",c1,c2);

}

若程序运行时从键盘输入48回车,则输出结果为 【8】 。

(9)有以下函数

void prt(char ch,int n)

{ int i;

for(i=1;i=n;i++)

printf(i%6!=0?"%c":"%c\n",ch);

}

执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。

#include

main()

{ int x=10,y=20,t=0;

if(x==y)t=x;x=y;y=t;

printf("%d %d\n",x,y);

}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k0)开始的后续元素全部向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int i;

for(i=k;i

}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

#include

【12】 ;

main()

{ double x,y,(*p)();

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

p=avg;

printf("%f\n",(*p)(x,y));

}

double avg(double a,double b)

{ return((a+b)/2);}

(13)以下程序运行后的输出结果是 【13】。

#include

main()

{ int i,n[5]={0};

for(i=1;i=4;i++)

{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }

printf("\n");

}

(14)以下程序运行后的输出结果是 【14】。

#include

#include

#include

main()

{ char *p; int i;

p=(char *)malloc(sizeof(char)*20);

strcpy(p,"welcome");

for(i=6;i=0;i--) putchar(*(p+i));

printf("\n-"); free(p);

}

(15)以下程序运行后的输出结果是 【15】。

#include

main()

{ FILE *fp; int x[6]={1,2,3,4,5,6},i;

fp=fopen("test.dat","wb");

fwrite(x,sizeof(int),3,fp);

rewind(fp);

fread(x,sizeof(int),3,fp);

for(i=0;i6;i++) printf("%d",x[i]);

printf("\n");

fclose(fp);

}

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计答案

一.选择题1-5 ABDDB

6-10 ACDCB 11-15 ADBAA

16-20 ADCAD 21-25 BDBCD

26-30 CDCCC 31-35 BBBDB

36-40 CDDCB

二,填空题

1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217

8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715

14) e(E)moclew 15) 123456

2010年9月全国计算机等级考试二级C笔试试卷答案

一、选择题

1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB

21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空

1.1DCBA2345 2.n-1 3.25 4.结构化 5.物理设计 6.2008

7.15 8.非0 9. 1 4 13 40 10.i 11.2

12.a[row][col] 13.3 14.*s 15.FILE

全国计算机等级考试二级C语言历年试题及答案

2010年9月全国计算机等级考试二级C语言笔试试题及答案

一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))

(1)下列选项中不属于软件生命周期开发阶段任务的是

A)详细设计 B)概要设计 C)软件维护 D)软件测试

(2)树是结点的集合,它的根结点数目是

A)有且只有1 B)1或多于1 C)0或1 D)至少2

(3)在面向对象方法中,实现信息隐蔽是依靠

A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类

(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和

A)语句成分 B)变量成分 C)对象成分 D)传输成分

(5)冒泡排序在最坏情况下的比较次数是

A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2

(6)下列叙述中,不属于软件需求规格说明书的作用的是

A)作为确认测试和验收的依据

B)反映出用户问题的结构,可以作为软件开发工作的基础和依据

C)便于用户、开发人员进行理解和交流

D)便于开发人员进行需求分析

(7)下列叙述中错误的是

A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成

C)C程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在

(8)下列不属于软件工程的3个要素的是

A)方法 B)过程 C)工具 D)环境

(9)下列叙述中正确的是

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

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

C)数据库管理系统就是数据库系统

D)以上三种说法都不对

(10)下列叙述中正确的是

A)每个C程序文件中都必须有一个main()函数

B)在C程序的函数中不能定义另一个函数

C)C程序可以由一个或多个函数组成

D)在C程序中main()函数的位置是固定的

(11)将E-R图转换到关系模式时,实体与联系都可以表示成

A)属性 B)关系 C)键 D)域

(12)下列定义变量的语句中错误的是

A)double int_; B)int _int; C)char For D)float USS

(13)下列叙述中正确的是

A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用

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

A) 0x8A B)12 C).177 D) 028

(15)以下叙述中正确的是

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

(16)若在定义语句:int a,b,c,*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是

A)scanf("%d",p); B)scanf("%d%d%d",a,b,c);

C)scanf("%d",p); D) scanf("%d",a,b,c);

(17) 有以下程序

main()

{int x,y,z;

x=y=1;

z=x++,y++,++y;

printf("%d,%d,%d\n",x,y,z);

}

程序运行后的输出结果是

A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1

(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25b--=2c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A)***a=25,b=13,c=19 B)***a=26,b=14,c=19

C)### a=25,b=13,c=19 D)### a=26,b=14,c=19

(19)下列程序段的输出结果是

int a=1234;

float b=123.456;

double c=12345.54321;

printf("-,%2.1f,%2.1f",a,b,c);

A)无输出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5

(20)有以下程序

main()

{int a=0,b=0;

a=10; /*给a赋值

b=20; 给b赋值 */

printf("a+b=%d\n",a+b); /* 输出计算结果 */

}

程序运行后输出结果是

A)30 B)a+b=30 C)a+b=0 D)出错

(21)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是

#include

main()

{ char c;

int v0=1,v1=0,v2=0;

do{ switch(c=getchar())

{ case ′a′:case ′A′:

case ′e′:case ′E′:

case ′i′:case ′I′:

case ′o′:case ′O′:

case ′u′:case ′U′:v1+=1;

default:v0+=1;v2+=1;

}

} while(c!=′\n′);

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);

}

A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8

C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12

(22) 有以下程序

#include

main()

{int y=9;

for( y0;y--)

if(y%3= =0) printf("%d",--y);

}

程序的运行结果是

A)732 B)433 C)852 D)874

(23) 设有以下程序段

int x=0,s=0;

while(!x!=0)s+=++x;

printf("%d",s);

A)运行程序段后输出0 B)运行程序段后输出1

C)程序段中的控制表达式是非法的 D)程序段执行无限次

(24)有以下程序

fun(int x,int y){return(x+y);}

main()

{int a=1,b=2,c=3,sum;

sum=fun((a++,b++b,a+b),c++);

printf("%d\n",sum);

}

执行后的输出结果是

A)5 B)7 C)8 D)3

(25)执行下面的程序段后,变量k中的值为

int k=3, s[2];

s[0]=k; k=s[1]*10;

A)不定值 B)35 C)31 D)20

(26)以下叙述中错误的是

A)改变函数形参的值,不会改变对应实参的值

B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值

D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL

(27)以下程序段的描述,正确的是

x=-1;

do

{x=x*x;} while(!x);

A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误

(28)有以下程序

fun(int x,int y)

{static int m=0,i=2;

i+=m+1;m=i+x+y; return m;

}

main()

{int j=1,m=I,k;

k=fun(j,m); printf("%d",k);

k=fun(j,m); printf("%d\n",k)

}

执行后的输出结果是

A)5,5 B)5,11 C)11,11 D)11,5

(29)有以下程序

fun(int x)

{int p;

if(x==0║x= =1) return(3);

p=x-fun(x=2);

retum p;

}main()

{ prinf("%d\n",fun(7));}

执行后的输出结果是

A)7 B)3 C)3 D)0

(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=a;,当执行p++;后,下列说法错误的是

A)p向高地址移了一个字节 B)p抽高地址移了一个存储单元

C)p向高地址移了两个字节 D)p与a+1等价

(31)有以下程序

main()

{int a=1,b=3,c=5;

int *p1=a,*p2=b,*p=c;

*p=*p1*(*p2);

printf("%d\n",c);

}

执行后的输出结果是

A)1 B)2 C)3 D)4

(32)下列程序执行后的输出结果是

void func1(int i);

void func2(int i);

char st[]="hello,friend!";

void func1(int i)

{ printf("%c",st[i]);

if(i3){i+=2;func2(i);}

}

void func2(int i)

{ printf("%c",st[i]);

if(i3){i+=2;func1(i);}

}

main()

{ int i=0; func1(i); printf("\n");}

A)hello B)hel C)hlo D)hlm

(33)在下述程序中,判断ij共执行的次数是

main()

{ int i=0, j=10, k=2, s=0;

for (;;)

{ i+=k;

if(ij)

{ printf("%d",s);

break;

} s+=i;

}

}

A)4 B)7 C)5 D)6

(34)以下函数返回a所指数组中最大值所在的下标值

fun(int *a,int n)

{ int i,j=0,p;

p=j;

for(i=j;iif(a[i]a[p]);

return(p);

}

在下划线处应填入的内容是

A)i=p B)a[p]=a[i] C)p=j D)p=i

(35)下列程序执行后的输出结果是

main()

{ int a[3][3], *p,i;

p=a[0][0];

for(i=1; i9; i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A)3 B)6 C)9 D)随机数

(36) 有以下程序

#include

void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

{int t,i,j;

for(i=0;ifor(j=i+1;jif (a}

main()

{int c[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for (i=0;i10;i++) printf("%d,",c);

printf("\n");

}

程序运行的结果是

A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,

C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,

(37)以下程序的输出结果是#include

void prt (int *x, int*y, int*z)

{ printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{ int a=10,b=40,c=20;

prt (a,b,c);

prt (a,b,c);

}

A)11,42, 31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(38) 有以下程序:

#include

void fun(char *t,char *s)

{

while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{

char ss[10]=”acc”,aa[10]=”bbxxyy”;

fun(ss,aa);

printf(“%s,%s\n”,ss,aa);

}

程序运行结果是

A) accxyy , bbxxyy B) acc, bbxxyy

C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy

(39) 有以下程序

#include

main()

{ FILE *fp; int i=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",k,n); printf("%d %d\n",k,n);

fclose(fp);

}

程序运行后的输出结果是

A)20 30 B)20 50 C)30 50 D)30 20

(40) 有以下程序

main()

{int x[3][2]={0},I;

for(I=0;I3;I++) scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

}

若运行时输入:246,则输出结果为

A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6

(41)有以下程序

int add(int a,int b){return+b};}

main()

{int k,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是

A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);

(41)有以下程序

#include

main(int argc,char *argv[])

{int i=1,n=0;

while(iarge){n=n+strlen(argv[i]);i++;}

printf(“%d\n”,n);

}

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:

proc 123 45 67

则程序的输出结果是

A)3 B)5 C)7 D)11

(42)有以下程序

void fun2(char a, char b){printi(“%b%c”,a,b);}

char a= ‘A’,b= ‘B’;

void fun1( ){ a= ‘C’l b= ‘D’; }

main( )

{ fun1( )

printf( “%c%c”,a,b);

fun2(‘E’, ‘F’);

}

程序的运行结果是

A)CDEF B)ABEF C)ABCD D)CDAB

(43)有以下程序

#include

#define N 5

#define M N+1

#define f(x) (x*M)

main()

{int i1,i2;

i1=f(2);

i2=f(1+1);

printf(“%d %d\n”,i1,i2);

}

程序的运行结果是

A)12 12 B)11 7 C)11 11 D)12 7

(44)设有以下语句

typedef struct TT

{char c; int a[4];}CIN;

则下面叙述中正确的是

A)可以用TT定义结构体变量 B)TT是struct类型的变量

C)可以用CIN定义结构体变量 D)CIN是struct TT类型的变量

(45)有以下结构体说明、变量定义和赋值语句

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是

A)scanf(“%s”,s[0].name); B)scanf(“%d”,s[0].age);

C)scanf(“%c”,(pssex)); D)scanf(“%d”,psage);

(46)若有以下定义和语句

union data

{ int i; char c; float f;}x;

int y;

则以下语句正确的是

A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);

(47)若变量已正确定义,则以下语句的输出结果是

s=32; s^=32;printf(“%d”,s);

A)-1 B)0 C)1 D)32

(48) 若程序中有宏定义行:#define N 100 则以下叙述中正确的是

A)宏定义行中定义了标识符N的值为整数100

B)在编译程序对C源程序进行预处理时用100替换标识符N

C) 对C源程序进行编译时用100替换标识符N

D)在运行时用100替换标识符N

(49)以下叙述中正确的是

A)C语言中的文件是流式文件,因此只能顺序存取数据

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

(50)有以下程序

#include

main()

{FILE *fp; int i;

char ch[]=”abcd”,t;

fp=fopen(“abc.dat”,”wb+”);

for(i=0;i4;i++)fwriterch[],1,1fp;

fseek(fp,-2L,SEEK_END);

fread(t,1,1,fp);

fclose(fp);

printf(“%c\n”,t);

}

程序执行后的输出结果是

A)d B)c C)b D)a

二、填空题(每空2分,共40分)

(1)在面向对象方法中,类之间共享属性和操作的机制称为 【1】 。

(2)一个关系表的行称为 【2】 。

(3)耦合和内聚是评价模块独立性的两个主要标准,其中 【3】 反映了模块内各成分之间的联系。

(4)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的【4】存储结构.

(5) 【5】 的任务是诊断和改正程序中的错误。

(6) 以下程序的输出结果是【6】.

#include

main()

{ int n=12345,d;

while(n!=0){ d=n%10; printf("%d",d); n/=10;}

}

(7)以下程序运行后的输出结果是 【7】 。

main()

{

int m=011,n=11;

printf("%d %d\n",++m,n++);

}

(8)有以下程序,若运行时从键盘输入:18,11,则程序输出结果是 【8】 。

main()

{ int a,b;

printf("Enter a,b:");scanf("%d,%d",a,b);

while(a!=b)

{ while(ab) a-=b;

while(ba) b-=a;

}

printf("%3d%3d\n",a,b);

}

(9) 有以下程序段,且变量已正确定义和赋值

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

printf("s=%f\n\n",s);

请填空,使下面程序段的功能为完全相同

s=1.0;k=1;

while(_【9】_______){ s=s+1.0/(k*(k+1)); _【10】_______;}

printf("s=%f\n\n",s);

(10)执行以下程序的输出结果是【11】______.

#include

main()

{ int i,n[4]={1};

for(i=1;i=3;i++)

{ n=n[i-1]*2+1; printf("%d",n); }

}

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

#include

viod 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;u10;u++) scanf("%d",a);

f(a,10);

for(u=0;u10;u++) printf("%d",a);

printf("\n");

}

(12)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。请填空。

#include

#include

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s++=*t++);

s= 【14】 ;

while( 【15】 =*p++);

}

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1 ,str2); printf("%s\n",str1);

}

(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.

#include

#include

main()

{ int num[26]={0},i; char c;

while((_【16】_______)!='#')

if(isupper(c)) num[c-‘A’]+= 【17】_______;

for(i=0;i26;i++)

Printf("%c:%d\n",i+'A',num);

}

(14)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include "math.h"

double fun(double x) { return(x*x-2*x+6); }

main()

{

double x,y1,y2;

printf("Enter x:"); scanf("%lf",x);

y1=fun( 【18】 );

y2=fun( 【19】 );

printf("y1=%lf,y2=%lf\n",y1,y2);

}

(15) 以下程序的输出结果是_【20】______.

#include

#define M 5

#define N M+M

main()

{ int k;

k=N*N*5; printf("%d\n",k);

}

一、选择题答案:

1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA

31-40:CCDAB DCDAB 41-50:CABCD BBBDB

二、填空题答案:

1.继承 2. 元组 3.内聚 4.顺序 5. 程序调试

6. 54321 7.10 11 8. 1 9.k=n k++

10. 3 7 5 11.x[0] x[0] 12.s--,*s++ 13.c=getchar() 14. (x+8),sin(x) 15.55

希望对你有所帮助

计算机二级c语言考试题目类型

全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道操作题(60分)。

单选题中1~10题为二级公共基础知识,单选题的11~40题是C语言的内容。

操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。

程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生具体抽到的题目不同,程序填空有2到3个空要填。

程序改错也是一个完整的程序,其中有2~3处错误要求考生将他们改正。

编程题是要求考生编写一个程序,然后运行出题干要求的结果。题目中主函数main()会完整给出,在主函数中将调用fun()函数,fun函数由考生自己编写。编程题以运行结果给分,所编写完成后必须运行,否则没分。

二级C语言程序设计考试涉及公共基础知识和C语言两块。公共基础知识内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。考10个单选每个1分。

C语言有基础知识(C语言概述、常量与变量、数据类型、运算符和表达式),编程三大结构(顺序结构、选择结构、循环结构),数组、函数和指针,其他内容(预处理命令、结构体和共用体、位运算、文件)四大部分内容。重点是第二、三部分。

计算机二级C语言模拟题及答案

2017年计算机二级C语言模拟题及答案

1.1 单选题

1.下列变量名中,非法的是( C )。

A.A25 B.My_car

C.My-str D.abc

2.下列常量中,十六进制int型常量是( A )。

A.0x5f B.x2a

C.046 D.7a

3.下列常量中,不是字符常量的是( B )。

A.'\n' B."y"

C.'x' D.'\7'

4.在函数体内定义了下述变量a,a的存储类为( D )。

int a;

A.寄存器类 B.外部类

C.静态类 D.自动类

5.下列关于变量存储类的描述中,错误的是( C )。

A.任何变量定义后都具有一个确定的存储类

B.变量的存储类确定了变量的作用域和寿命

C.定义变量时没有存储类说明符者一律为自动类

D.内部静态类变量和外部静态类变量的存储类说明符都是static

6.下列关于变量数据类型的描述中,错误的是( A )。

A.定义变量时int型数据类型可以省略

B.变量的数据类型可以决定该变量占内存的字节数

C.变量的数据类型是可以被强制的

D.变量的数据类型是有高低之分的

7.长双精度浮点型常量的后缀是( C )。

A.U B.F

C.L D.无

8.下列运算符中,不能用于浮点数操作的是( D )。

A.++ B.+

C.*= D.(双目)

9.下列运算符中,优先级最高的是( A )。

A.*(双目) B.||

C. D.%=

10.下列运算符中,优先级最低的是( B )。

A.== B.?:

C.| D.

11.已知:int a(3);下列表达式中,错误的是( C )。

A.a%2==0 B.a--+2

C.(a?2)++ D.a=2

12.已知:int b(5),下列表达式中,正确的是( D )。

A.b="a" B.++(b?1)

C.b%2.5 D.b=3,b+1,b+2

6

13.下列关于类型转换的'描述中,错误的是( C )。

A.类型转换运算符是(类型)

B.类型转换运算符是单目运算符

C.类型转换运算符通常用于保值转换中

D.类型转换运算符作用于表达式左边

1.1 判断题

×1.C++语言和C语言都是面向对象的程序设计语言。

√2.面向对象方法具有封装性、继承性和多态性。

√3.C语言是C++语言的一个子集。C++语言继承了C语言。

×4.C++语言程序与C语言程序一样都是函数串。

×5.C++语言支持封装性和继承性,不支持多态性。

√6.C++语言比C语言对数据类型要求更加严格了。

√7.C++语言对C语言进行了一次改进,使得编程更加方便了。

×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。

√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。

√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。

通过对1.5题中3个程序的修改,回答下列问题

从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。

答:C++程序要包含iostraem.h,main()函数前应加类型说明符void。

C++程序中所出现的变量是否必须先说明后使用?在函数体内说明变量时是否都要放在函数体的开头?

答:C++程序中所出现的变量必须先说明后使用。在函数体内说明变量时不一定要放在函数体的开头。

使用cout和插入符()输出字符串常量时应注意什么?

答:可输出一个字符串常量,也可输出多个字符串常量。每输出一个字符串常量要使用一次插入符()。

程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?

答:不能使用。因为它的值不确定。

5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?

答:不一定正确。可能还有算法错。

;

(责任编辑:IT教学网)

更多

推荐excel文章