2016年3月全国计算机等级考试二级《C语言》真题及详解

2016年3月全国计算机等级考试
二级《C语言》真题
(总分100, 考试时间120分钟)
一、选择题(每小题1分,共40分)
1. 有以下程序:
#include <stdio.h>
int mul(int val)
{ static int init = 1;
return init *= val;
}
main()
{ int i;
for(i=1;i<=5;i++)
printf("%d,",mul(i));
}
程序运行后的输出结果是()。

A 1,2,6,24,120,
B 1,2,3,4,5,
C 1,1,1,1,1,
D 1,2,4,6,8,
该问题分值: 1
答案:A
static静态变量只在声明时初始化一次。

mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为l,2,6,24,120。

故答案为A选项。

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

A 软件是程序、数据和文档
B 软件是程序和数据
C 软件是算法和数据结构
D 软件是算法和程序
该问题分值: 1
答案:A
计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。

故选A选项。

3. 语句prinff(”%d\n”,strlen(”\t\”\、、n\"\065\08AB”));的输出结果是()。

A 6
B 7
C 8
D 9
该问题分值: 1
答案:A
字符串”\t\¨\\\nV、065\08AB”中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符’\0’为止,然后返回计数器值(长度不包含”、O”)。

故输出结果为6。

答案为A选项。

4. 函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不
完整。

int fun(int *a,int n)
{ int *p,*s;
for(p=a,s=a;p-a<n;p++)
if(__________)s=p;
return *s;
}
在if语句下划线处应填人的选项是()。

A O>s
B * P>*s
C a[p]>a[s]
D p—a>P—s
该问题分值: 1
答案:B
函数fun的功能是在形参a所指的具有n个元素的数组中查找最大值并返回。

通过for循环比较,s始终指向最大值的那个元素。

取指针的值,使用+P,因此比较使用·P和}8,需要找到最大值,当}8<+P 时,修改指针s的指向,因此答案为B选项。

5. 若有语句:int a[3][4],(。

P)[4];P=a;,则以下选项中叙述错误的是()。

A 系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值
B P+1代表a[1][0]的地址
C P中将存放a数组的首地址
D P+2代表a数组最后一行的首地址
该问题分值: 1
答案:A
(+P)[4]定义了一个数组指针。

P可以指向类似于arry[][4]的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。

P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。

故答案为A选项。

6. 有以下程序:
#include<stdio.h>
#include<string.h>
main()
{ chara[] ="TEXT",*b="++",c[3]="1";
printf("%d,%d,",strlen(a),sizeof(a));
printf("%d,%d,",strlen(b),sizeof(b));
printf("%d,%d,\n",strlen(c),sizeof(c));
}
程序运行后的输出结果是()。

A 4,5,2,4,1,3,
B 4,4,2,2,1,1,
C 5,5,3,3,2,2,
D 4,4,2,2,1,3
该问题分值: 1
答案:A
sizeof()是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、对象、函数等。

它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。

strlen(·char)函数,要在运行时才能计算,参数必须是字符型指针(char·),当数组名作为参数传人时,实际上数组就退化成指针了,它的功能是:返回字符串的长度。

该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到
结束符NULL,返回的长度大小不包括NULL。

sizeof(a)求数组a所占空间的大小,包括字符串最后的’、0’,所以sizeof(a)=5,strlen()遇到’、0’就结束,strlen(a)=4。

strlen(b)是指针指向的字符串长度,sizeof(b)是指针的大小。

strlen(c)是字符串的长度,sizeof(c)是数组的长度。

因此,输出4,5,2,4,l,3。

故答案为A选项。

7. 若有定义:int a,b,C;以下程序段的输出结果是()。

a=11;b=3;C=0;
pfinff(”%d\n”,c=(a/b,a%B.);
A 2
B 0
C 3
D 1
该问题分值: 1
答案:A
c语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。

逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。

也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。

因此变量c的值为a%b即11%3=2。

放答案为A选项。

8. 若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是()。

A seanf(”%lf%1f%1P‘&a,&b,&C.;
B scanf(-t%f%f%f¨,&a,&b。

&C.:
C scanf(”%If%lf%lf’,a,b,C.;
D scanf(”%lf%lf%lf'’,&a,&b,&C.;
该问题分值: 1
答案:D
%If,%le是针对double类型的,如果仅用%f,输入的数据可能不完全接收,数据的精度可能不足。

%f主要针对tloat类型的变量输入,因此选项8错误。

根据题目格式可知选项A,C错误。

故答案为D选项。

9. 有以下程序段:
char str[4][12]={"aaa","bbb","ccc","ddd"},*p[4];
int i;
for(i=0;i<4;i++) p[i]=str[i];
以下选项中不能正确引用字符串的是()。

A 3
B p[3]
C str[2]
D *P
该问题分值: 1
答案:A
t p[3]一p[3][0]是一个字符,不是字符串,选项A错误。

P[3]和str[2]和+P分别代表了ddd,eec,flaa。

答案为A选项。

10. 在最坏情况下,二分查找法的时间复杂度为()。

A
B
C
D n
该问题分值: 1
答案:C。

合集下载

2016全国计算机等级考试二级C语言笔试真题说课讲解

2016全国计算机等级考试二级C语言笔试真题说课讲解

2016全国计算机等级考试二级C语言笔试真题篇一:2016年全国计算机等级考试二级C语言考试大纲及重点2016年全国计算机等级考试二级C语言考试大纲◆基本要求1.熟悉 Visual C++ 集成开发环境。

2.掌握结构化程序设计的方法,具有良好的程序设计风格。

3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4.在 Visual C++ 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力◆考试内容一、C语言程序的结构1.程序的构成,main函数和其他函数。

2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。

3.源程序的书写格式。

语言的风格。

二、数据类型及其运算的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。

运算符的种类、运算优先级和结合性。

3.不同类型数据间的转换与运算。

表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句1.表达式语句,空语句,复合语句。

2.输入输出函数的调用,正确输入数据并正确设计输出格式。

四、选择结构程序设计1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

五、循环结构程序设计循环结构。

和do-while循环结构。

语句和break语句。

4.循环的嵌套。

六、数组的定义和引用1.一维数组和二维数组的定义、初始化和数组元素的引用。

2.字符串与字符数组。

七、函数1.库函数的正确调用。

2.函数的定义方法。

3.函数的类型和返回值。

4.形式参数与实在参数,参数值传递。

5.函数的正确调用,嵌套调用,递归调用。

6.局部变量和全局变量。

7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

八、编译预处理1.宏定义和调用(不带参数的宏,带参数的宏)。

2.“文件包含”处理。

九、指针1.地址与指针变量的概念,地址运算符与间址运算符。

2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。

计算机二级C语言测试题及答案解析

计算机二级C语言测试题及答案解析

2016年计算机二级C语言测试题及答案解析(二) 基本输入输出及流程控制1.#in elude?mai n(){ int a=1,b=3,c=5;if (c==a+b)prin tf("yes\n");elseprin tf(" no\n");}运行结果为:no详见教材p89选择结构详见教材p91关系符号详见附录D p378符号的优先级==表示判断符号两边的值是否相等;二表示将符号右边的值赋给左边的变量本题考点是选择结构3种基本形式的第二种选择结构三种一般形式中的“语句”皆为复合语句,复合语句要用{ }括起来,只有当复合语句中只包括一条语句时可以省略{ },此题即如此,因此两个printf 操作没有加{ }若c==a+b 成立,则执行printf("yes\n");否则(即c==a+b不成立),执行printf("no\n");+的优先级高于==,因此先算a+b,值为4,表达式5==4不成立,因此执行printf("no\n"); 即输出字符串no2.?#in clude?mai n(){ int a=12, b= -34, c=56, min=0;mi n=a;if(mi n>b)?mi n=b;if(min >c)?mi n=c;prin tf("mi n=%d", mi n);}运行结果为:min二-34详见教材p89选择结构本题考点是选择结构3种基本形式的第一种一共包含了两个选择结构(两个if语句)定义变量,并赋值此时a=12, b= -34, c=56, min=O将a中值拷贝,赋给min,覆盖了min中的0,此时min中的值被更新为12。

若min>b成立,则执行min二b;若min>c成立,则执行min二c;输出min中的值12大于-34,第一个if语句的表达式成立,因此执行min二b;执行后min 中的值被更新为-34.-34小于56,第二个if语句的表达式不成立,因此不执行min二c;最后输出min中的值,为-34.3.#in elude?mai n(){ int x=2,y= -1,z=5;if(x if(yvO)?z=0;elsez=z+1;printf( “ %d\n” ,z);}运行结果为:5遇到选择结构,首先要明确条件表达式成立时执行哪些操作。

全国计算机等级考试二级C语言操作题42016年_真题(含答案与解析)-交互

全国计算机等级考试二级C语言操作题42016年_真题(含答案与解析)-交互

全国计算机等级考试二级C语言操作题4 2016年(总分30, 做题时间90分钟)1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

所有学生数据均以二进制方式输出到文件中。

函数fun的功能是从形参filename 所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!给定源程序:#include#define N 5typedef struct student {long sno;char name[10];float score[3];} STU;void fun(char *filename){ FILE *fp; int i, j;STU s[N], t;/**********found**********/fp = fopen(filename, __1__);fread(s, sizeof(STU), N, fp);fclose(fp);for (i=0; ifor (j=i+1; j/**********found**********/if (s[i].sno __2__ s[j].sno){ t = s[i]; s[i] = s[j]; s[j] = t; }fp = fopen(filename, "wb");/**********found**********/__3__(s, sizeof(STU), N, fp); /* 二进制输出 */fclose(fp);}main(){ STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},{10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},{10001,"MaChao", 91, 92, 77}}, ss[N];int i,j; FILE *fp;fp = fopen("student.dat", "wb");fwrite(t, sizeof(STU), 5, fp);fclose(fp);printf("\n\nThe original data :\n\n");for (j=0; j{ printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name);for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]);printf("\n");}fun("student.dat");printf("\n\nThe data after sorting :\n\n");fp = fopen("student.dat", "rb");fread(ss, sizeof(STU), 5, fp);fclose(fp);for (j=0; j{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);printf("\n");}}SSS_TEXT_QUSTI分值: 10解题思路:本题是考察把结构中的数据写入文件。

2016年03月全国计算机等级考试二级《C语言》真题及详解

2016年03月全国计算机等级考试二级《C语言》真题及详解

2016年03月全国计算机等级考试二级《C语言》真题(总分100, 考试时间90分钟)一、选择题1. 有以下定义:struct data{ int i;char c;double d;}x;以下叙述中错误的是______。

A x的内存地址与x. i的内存地址相同B struct data是一个类型名C 初始化时,可以对x的所有成员同时赋初值D 成员i、c和d占用的是同一个存储空间答案:D[解析] 变量i、c、d是结构体变量x中三个不同的成员,占用不同的存储空间。

2. 以下函数的功能是:计算a的n次方作为函数值返回。

double fun(double a,int n){ int i;double s=1.0;for(i=1;i<=n;i++)s=______;return s;}为实现上述功能,函数中下划线处应填入的是______。

A s*iB s*aC s+i*iD s+a*a答案:B[解析] s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。

3. 有以下程序:#include<stdio.h>#include<string.h>main( ){ char str[ ]={"Hello,Beijing"};printf("%d,%d\n",strlen(str),sizeof(str));}程序的运行结果是______。

A 13,13B 13,14C 13,15D 14,15答案:B[解析] strlen返回字符串的长度,不包含字符串末尾的结束字符"\0",结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个"\0",所以结果为13+1=14。

4. 若有说明:typedef struct{int a;char c;}w;,则以下叙述正确的是______。

A 编译后系统为w分配5个字节B 编译后系统为w分配6个字节答案:D[解析] w是一个自定义类型,不是变量,故编译后系统不为w分配存储空间。

2016年3月份全国计算机等级考试二级C语言答案及及真题

2016年3月份全国计算机等级考试二级C语言答案及及真题

作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词 之间有若干个空格隔开,一行的开始没有空格。 注意:部分源程序在文件 PROG1.C 中。 请勿改动 main 函数和其他函数中的任何内容,仅在函数 fun 的花括号中填入所 编写的若干语句。
int fun(char *s) { int i,j=0; for(i=0;s[i]!='\0';i++) if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0')) /*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/ j++; return j; /*返回单词个数*/ } 第(2)套: (1)程序填给定程序中,函数 fun 的功能是:计算形参 x 所指数组中 N 个数的 平均值(规定所有数均为正数),作为函数值返回,并将大于平均值的数放在形参 y 所指数组 中,在主函数中输出。 例如,有 10 个正数:46、30、32、40、6、17、45、15、48、26,其平均值为 30.500000。 主函数中输出:46 32 40 45 48。
组中 N 个数的平均值(规定所有数均为正数), 将所指数组中大于平均值的数据移 至数组的前部, 小于等于平均值的数据移至 x 所指数组的后部,平均值作为函数 值返回,在主函数中输出平均值和移动后的数据。 例如, 有 10 个正数: 46、 30、 32、 40、 6、 17、 45、 15、 48、 26, 平均值为 30.500000。 移动后的输出为:46、32、40、45、48、30、6、17、15、26。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!

3月计算机等级考试二级C语言笔试真题及参考答案

3月计算机等级考试二级C语言笔试真题及参考答案

2010年3月计算机等级考试二级C语言笔试真题一、选择题(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为nB)对长度为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)_1B)AaBcC)a_bD)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)有以下程序#includemain(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar(); d=getchar();printf(“%c%c%c%cn”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是A)1234B)12C)123D)1234(16)以i关于C语言数据类型使用的叙述中错误的是A)若要准确无误差的表示自然数,应本资.料来源于贵-州-学-习-网使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是A)1B)0C)2D)不知道a的值,不能确定(18)以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是A)switch(a){case:a=b;break;default:a++;}B)switch(a==1){case 0:a=b;break;case 1:a++;}C)switch(a){default:a++;break;case 1:a=b;}D)switch(a==1){case 1:a=b;break;case 0:a++;}(19)有如下嵌套的if语句if (aif(aelse k=c;elseif(belse k=c;以下选项中与上述if语句等价的语句是A)k=(aB)k=(aC)k=(aD)k=(a(20)有以下程序#includemain(){in i,j,m=1;for(i=1;i<3;i++){for(j=3;j>O;j--){if(i*j)>3)break;m=i*j;}}printf("m=%dn",m);}程序运行后的输出结果是A)m=6B)m=2C)m=4D)m=5(21)有以下程序#include(stdio.h>main(){int a=l;b=2;for(;a<8;a++) {b+=a;a+=2;}printf("%d,%dn",a,b);}程序运行后的输出结果是A)9,18B)8,11C)7,11D)10,14(22)有以下程序,其中k的初值为八进制数#includemain(){int k=011;printf("%dn",k++);}程序运行后的输出结果是A)12B)11C)10D)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)一个自定义函数中必须有本文来源于贵州学习网WWW.GZU521.COM一条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 2008int num[N];(26)有以下程序#includevoid 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,%en",b,a);}程序运行后的输出结果是A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(27)若有定义int(*Pt)[3];,则下列说法正确的是A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组ptC)定义了一个名为*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("%dn", s);}程序运行后的输出结果是A)6B)10C)11D)15(30)有以下程序#includemain(){int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=ij<=1;j++) t+=b[i][b[j][i]];printf("%dn",t);}程序运行后的输出结果是A)1B)3C)4D)9(31)若有以下定义和语句char s1[10]="abcd!",*s2="n123\";printf("%d %dn", strlen(s1),strlen(s2));则输出结果是A)5 5B)10 5C)10 7D)5 8(32)有以下程序#include#define N 8void fun(int *x,int i){*x=*(x+i);}main(){int a[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=O;i{printf("%d",a[i]);}printf("n");}程序运行后的输出结果是A)1313B)2234C)3234D)1234(33)有以下程序#includeint f(int t[],int n);main{ int a[4]={1,2,3,4},s;s=f(a,4); printf("%dn",s);}int f(int t[],int n){ if(n>0) return t[n-1]+f(t,n-1);else return 0;}程序运行后的输出结果是A)4B)1OC)14D)6(34)有以下程此资料转贴于贵州学习网序#includeint fun(){ static int x=1;x*2; return x;}main(){int i,s=1,for(i=1;i<=2;i++) s=fun();printf("%dn",s);}程序运行后的输出结果是A)OB)1C)4D)8(35)有以下程序#include#define SUB(a) (a)-(a)main(){ int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%dn",d);}程序运行后的输出结果是A)0B)-12C)-20D)10(36)设有定义:struct complex{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是A)data2=data1;B)data2=(2,6);C)data2.real=data1.real;D)data2.real=data1.unreal;(37)有以下程序#include#includestruct A{ int a; char b[10]; double c;};void f(struct A t);main(){ struct A a={1001,"ZhangDa",1098.0};f(a); printf("%d,%s,%6.1fn",a.a,a.b,a.c);}void f(struct A t){ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;} 程序运行后的输出结果是(38)有以下定义和语句struct workers{ int num;char name[20];char c;struct{int day; int month; int year;}s;};struct workers w,*pw;pw=&w;能给w中year成员赋1980的语句是A)*pw.year=198O;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序#includemain(){ int a=2,b=2,c=2;printf("%dn",a/b&c);}程序运行后的输出结果是A)OB)1C)2D)3(40)有以下程序#includemain(){ FILE *fp;char str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fpfopen("myfile.data","a++");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str); puts(str);fclose(fp);}程序运行后的输出结果是A)abcB) 28cC) abc28D)因类型不一致而出错二、填空题(1)一个队列的初始状态为空。

全国计算机等级考试二级C语言操作题112016年_真题(含答案与解析)-交互

全国计算机等级考试二级C语言操作题11 2016年(总分30, 做题时间90分钟)1.给定程序中,函数fun的功能是将带头结点的单向链表逆置。

即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5typedef struct node {int data;struct node *next;} NODE;void fun(NODE *h){ NODE *p, *q, *r;/**********found**********/p = h->__1__;/**********found**********/if (p==__2__) return;q = p->next;p->next = NULL;while (q){ r = q->next; q->next = p;/**********found**********/p = q; q = __3__;}h->next = p;}NODE *creatlist(int a[]){ NODE *h,*p,*q; int i;h = (NODE *)malloc(sizeof(NODE));h->next = NULL;for(i=0; i{ q=(NODE *)malloc(sizeof(NODE));q->data=a[i];q->next = NULL;if (h->next == NULL) h->next = p = q; else { p->next = q; p = q; }}return h;}void outlist(NODE *h){ NODE *p;p = h->next;if (p==NULL) printf("The list is NULL!\n"); else{ printf("\nHead ");do{ printf("->%d", p->data); p=p->next; } while(p!=NULL);printf("->End\n");}}main(){ NODE *head;int a[N]={2,4,6,8,10};head=creatlist(a);printf("\nThe original list:\n");outlist(head);fun(head);printf("\nThe list after inverting :\n"); outlist(head);}SSS_TEXT_QUSTI分值: 10解题思路:本题是考察使用链表方法,对链表的结点数据进行降序排列。

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

2016年3月份全国计算机等级考试二级C语言题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF CaseD)2a, DO, sizeof(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}A)409 B)277 C)1 D)91 (18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7(20)有以下程序#include <stdio.h>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("a=%d,b=%d\n",a,b);}A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1(21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd(26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)693825(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER是结构体类型名C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>t i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main()fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。

全国计算机等级考试二级C语言真题题库2+2016年3月

全国计算机等级考试二级C语言真题题库2 2016年3月(总分:100.00,做题时间:120分钟)一、选择题(每小题1分,共40分)(总题数:40,分数:40.00)1.设有以下程序段: struct book { float price; char language; char title[20]; } rec,*ptr; ptr = &rec; 要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

(分数:1.00)A.seanf(”%s”Ptrtitle);√B.scanf(”%s”,rec.title);C.scanf(’’%s”,(*pu).title);D.scanf(”%s”,ptr->title);解析:符号“_>”是指针特用的,符号“.”用于指定元素的成员。

ptr是指针,只能用符号“一>”,因此选项A错误。

+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。

选项B,Fee.title代表数组title,同理选项C正确。

答案为A选项。

2.有以下程序:aBeDefG##,则输出结果是()。

(分数:1.00)A.AbCdEFgB.ABCDEFGC.BCDEFGH √D.bedefgh解析:循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。

putchar(++C),表示将字符变量C加1后输出。

因此,输入aBcDefG##,得到的结果是BCDEFGH。

故答案为c选项。

3.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。

(分数:1.00)A.extem和static √B.auto和staticC.register和staticD.register和excerl解析:auto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。

2016全国计算机等级考试二级C语言笔试选择真题及答案

2016全国计算机等级考试二级C语言笔试选择真题及答案一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(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)软件详细设计产生的图如下:该图是A.N-S图B.PAD图C.程序流程图D.E-R图(8)数据库管理系统是A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统(9)在E-R图中,用来表示实体联系的图形是A.椭圆图B.矩形C.菱形D.三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A.选择B.投影C.交D.并(11)以下叙述中正确的是A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A.voidC._0_D.unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A.0B.3C.4D.5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为B.-10C.0D.10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A.0,0B.1,0C.3,2D.1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A.if(a>B.c=a,a=b,b=c;B.if(a>B.{c=a,a=b,b=c;}C.if(a>B.c=a;a=b;b=c;D.if(a>B.{c=a;a=b;b=c;}(18)有以下程序main(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,C.;}程序运行后的输出结果是A.3B.5C.7D.9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A.if((a>b)&&(b>C.) k=1;else k=0;B.if((a>b)||(b>C.k=1;else k=0;C.if(a<=B.k=0;else if(b<=C.k=1;D.if(a>B.k=1;else if(b>C.k=1;else k=0;20)有以下程序#includemain(){ char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++; printf(“%d\n”,n);}程序运行后的输出结果是A.0B.2C.3D.5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A.0 2B.1 3C.5 7D.1 2(22)有以下定义语句,编译时会出现编译错误的是A.char a=’a’;B.char a=’\n’;C.char a=’aa’;D.char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A.E,68B.D,69C.E,DD.输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A.32B.12C.21D.22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i{ max=MIN;if(maxreturn max;}造成错误的原因是A.定义语句int i,max;中max未赋初值B.赋值语句max=MIN;中,不应给max赋MIN值C.语句if(maxD.赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A.9,One*WorldB.9,One*DreamC.10,One*DreamD.10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”); }A.3 3 4 4B.2 0 5 0C.3 0 4 0D.0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A.7,4B.4,10D.10,10(31)下面是有关C语言字符数组的描述,其中错误的是A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A.将a所指字符串赋给b所指空间B.使指针b指向a所指字符串C.将a所指字符串和b所指字符串进行比较D.检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A.void (*pf)(); pf=fun;B.viod *pf(); pf=fun;C.void *pf(); *pf=fun;D.void (*pf)(int,char);pf=&fun;(34)有以下程序int f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s); }int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A.7B.8C.9D.10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A.10,64B.10,10C.64,10D.64,64(36)下面结构体的定义语句中,错误的是A.struct ord {int x;int y;int z;}; struct ord a;B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;} a;D.struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A.char str[ ]=”string”;c=str;B.scanf(“%s”,C.;C.c=getchar();D.*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.C.;}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; ) 程序运行后的输出结果是A.1001,ZhangDa,1098.0B.1001,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A.16B.8C.4D.2(40)下列关于C语言文件的叙述中正确的是A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档