一、计算机二级C语言考的都是原题么
1、考试题目大多为原题,最多有所调整,约300道题涵盖各种题型,关键在于前期的上机填空和改错题的准确完成,达到及格标准。
2、对于最后一道编程题,无需过度关注题目细节,关键在于掌握各类题目的编程方法,注重解题思路。
3、考试时长为120分钟,总分100分,总分60分可获得合格证书,90分以上可获得优秀证书。
4、编程部分占24分(仅在程序运行结果正确时得分)。
5、考试题目从题库中随机抽取,大约90%为原题,10%为新增题目,熟练掌握题库,多看书、多练习,基本能通过考试。
6、全国计算机等级考试(NCRE)是由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性考试。
7、程序主要由main函数和其他函数构成。
8、程序应包含头文件、数据说明、函数的开始和结束标志以及注释。
9、参考资料:全国计算机等级考试二级C_百度百科
二、全国计算机二级C语言每年考试题库都一样吗
1、题库变化不大,题型保持一致。计算机二级考试包括:程序设计/办公软件高级应用,考核内容包括计算机语言与基础程序设计能力,要求考生掌握一门计算机语言,可选类别有高级语言程序设计类、数据库程序设计类等。
2、办公软件高级应用能力要求考生具备计算机应用知识及MS Office办公软件的高级应用能力,能够在实际办公环境中开展具体应用。自2013年起,全国计算机等级考试已从传统的笔试和上机考试改革为无纸化考试,二级Delphi科目自2013年上半年起停考。
3、报考二级6个科目考试的新生,全部采用无纸化考试(即全部上机考试),取代传统的考试模式(笔试加上机)。参加二级7个科目补考的老生,仍按照传统模式参加补考。无纸化考试中,传统考试的笔试部分被移植到计算机上完成,考核内容和要求不变。
4、无纸化考试时间为120分钟,满分100分,总分达到60分可获得合格证书。未获得合格证书的考生,无补考资格,下一次需重新以新考生身份报名参加考试。
5、参考资料来源:百度百科-计算机二级考试
三、国家二级计算机考试C语言真题
2012年3月全国计算机等级考试二级C语言真题及答案如下:
A、循环队列是队列的一种顺序存储结构
B、循环队列是队列的一种链式存储结构
【解析】为了充分利用存储空间,可以把顺序队列看成一个环状空间,即把顺序队列的头尾指针相连,这样的队列称之为循环队列。它是对顺序队列的改进,故循环队列是队列的一种顺序存储结构
【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结构,故选项A)、B)、C)均不对,答案为选项D)。
3、一棵二叉树共有25个节点,其中5个是子节点,那么度为1的节点数为
【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)正确
4、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A、内模式 B、外模式 C、概念模式 D、逻辑模式
【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述。所以选项A)正确。
5、在满足实体完整性约束的条件下
A、一个关系中可以没有候选关键词
B、一个关系中只能有一个候选关键词
C、一个关系中必须有多个候选关键词
D、一个关系中应该有一个或者多个候选关键词
【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。所以在满足数据完整性约束的条件下,一个关系应该有一个或多个候选关键字,所以选项D)正确。
【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。记为T=R-S。根据本题关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算
A、软件维护 B、市场调研 C、软件测试 D、需求分析
【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生命周期的主要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。软件生命周期不包括市场调研。
8、下面不属于需求分析阶段任务的是
A、确定软件系统的功能需求 B、确定软件系统的系统的系能需求
B、制定软件集成测试计划 D、需求规格说明书审评
【解析】需求分析是对待开发软件提出的需求进行分析并给出详细的定义。主要工作是编写软件需求规格说明书及用户手册。需求分析的任务是导出目标系统的逻辑模型,解决“做什么”的问题。制定软件集成测试计划是软件设计阶段需要完成的任务
9、在黑盒测试方式中,设计测试用例的主要根据是
A、程序外部功能 B、程序内部逻辑
【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
10、在软件设计中不使用的工具是
【解析】软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。软件详细设计,程序流程图(PDF)和PAD(问题分析图)是过程设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。
11、针对简单程序设计,以下叙述的实施步骤正确的是
A、确定算法和数据结构、编码、调试、整理文档
B、编码、确定算法和数据结构、调试、整理文档
C、整理文档、确定算法和数据结构、编码、调试
D、确定算法和数据结构、调试、编码、整理文档
【解析】简单程序设计的步骤是首先要确定算法和数据结构,然后编码、调试,最后整理相关文档。
12、关于C语言中数的表示,以下叙述正确的是:
A、只有整型数在允许范围内能精确无误的表示,实型数会有误差
B、只要在允许范围内整型和实型都能精确表示
C、只有实型数在允许范围内能精确无误的表示,整型数会有误差
D、只有八进制表示的数在不会有误差
【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。
A、算法可以用伪代码、流程图等多种形式来描述
D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
【解析】一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出。
A、一个C程序可以包含多个不同名的函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必须用main作为函数名
【解析】一个C程序有且只有一个主函数 main()。一个C程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。
Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);
若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是
B、A和B之间不能有任何间隔符
【解析】考察C语言中输入格式,因为在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗号、回车和空格,因为这些也算是字符。所以在输入时也不可以有任何间隔符号。
16、以下选项中非法的字符常量是
D、’\019’
【解析】字符常量有两种表示方法:
本题中D)选项‘\019'使用是八进制表示,不应该出现9,所以错误
A 0,4,5 B 4,4,5 C 4,4,4 D 0,0,0
【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4。最后打印输出。
18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是
D、n=x++; printf((“%d\n”,n);
【解析】本题考察自增运算符,++x表示先将x值加1后再用,x++表示先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。
19、以下选项中,能表示逻辑值“假”的是
0
【解析】在C语言中非0的值表示真,0表示假
If(a++<9) printf((“%d\n”,a);
程序运行时键盘输入9<回车>,则输出的结构是
10
【解析】考察if语句和自增自减运算符,判断条件中if(a++<9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。执行else语句时,因为打印a--,是先用后减,所以先输出10,然后a的值变为9。
A 1,2,4 B 1,3,6 C 3,10,14 D 3,6,10
【解析】本题考察switch语句的应用,case分支后面如果没有break,那么就会顺序执行下面的case,直到遇到break跳出。所以第一次循环后s的值为3打印输出。第二次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。
22、若k是int类型变量,且有以下for语句
For(k=-1;k<0;k++) printf(****\n”);
下面关于语句执行情况的叙述中正确的是
A、循环体执行一次
【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k<0条件,推出循环,所以执行了一次。
A 1B3D5F B ABCDFE C A2C4E6 D 123456
【解析】考察for语句和if语句,第一次循环a的值为0,a%2也为0,条件不满足所以打印的是(c+a)即变量c的值“A”。第二次a的值为1,条件a%2的值为1,条件满足打印字符(b+a)即字符“2”。第三次a的值为2,条件不满足,打印(a+c)即字符”C”。同理打印后续字符为“4E6”。
【解析】考察数组和指针的概念,本题中*k指向数组m的首地址。*(k+2)现将指针后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。选项B的值是一个地址无意义。选项C的值为4。选项D使得m[0]的值为4。
25、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是
For(m=N-1;m>0;m--) scanf(“%d\n”,);
A &x[++m] B &x[m+1] C x+(m++) D x+m
【解析】考察指针的概念和应用,数组名本身就是地址,所以不需要在用&符号。C选项不能对所有元素赋值而是反复再给一个数值赋值且是死循环。
A、调用fun函数时,数组参数仅执行按值传递,而其他实参与形参之间执行按地址传递。
C、形参a代表数组名,n为指针变量。
D、调用fun函数时,将把double型实参数组的每个元素依次传递给形参a数组。
【解析】函数中的形参a[]已退化成一个指针,因此A和C选项不正确。D选项仅传递了一个指针,并未逐个赋值数组元素,正确选项为B。
printf("%d", a); printf("%d\n", b);
编译时,编译器提示错误信息,你认为出错的语句是:
C、k=1, m=8; D、p1=&k, p2=&m;
【解析】选项A中a=/*p1-m;表示方式不正确,未能正确表示出含义。
A char*str[ ]={"guest"}; B char str[10]={"guest"};
C char*str[3]*str[1]={"guest"}; D char str[3][10]; str[1]={"guest"};
【解析】考察指针数组的概念,D选项中str为二维字符数组,不能直接将一个字符串赋值到二维数组的某一行中。
29、avg函数的功能是求整型数组的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数声明语句错误的是:
A、int avg(int*a, int n); B、int avg(int a[10], int n);
C、int avg(int a, int n); D、int avg(int a[], int n);
【解析】考察函数声明基本用法,C选项中函数的第一个形参没有指明是数组,代表的是一个整型数,声明不正确。
{ printf("%d\n", strlen("ATS\n012\1"));}
【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度,\n与\1均为转义字符,各表示一个字符,所以打印值为8。
程序运行时从第一行开始输入this is a cat!<回车>,则输出结果是:
A thisisacat! B this is a C thisis a cat! D thisisa cat!
【解析】考察scanf和gets输入字符串的区别,scanf语句接收字符时遇到空格就作为一个字符串的结束,所以a数组中为this,b数组中为is,但getchar函数见到回车才认为结束,所以c数组为a cat!。因此打印结果如选项C。
【解析】考察函数的嵌套调用,当运行fun('z'),调用fun('y'),然后嵌套调用fun('x'),输出结果为先输出x,然后输出y,最后输出z。
for(i=0; i<=n; i++) printf("*");
{ func(3); printf("????"); func(4); printf("\n");}
A****#????***# B***#????*****# C**#????*****# D****#????*****#
【解析】考察for循环函数调用,执行fun(3)输出****,然后输出#,执行fun(4)时输出*****,然后输出#,所以选项D正确。
do{s[j]=s[j]+s[j+1];} while(++j<2);
for(K+1; k<5; k++) printf("%d", a[k]);
A 12345 B 23445 C 34756 D 35745
【解析】考察静态局部变量,静态局部变量属于静态存储方式,具有以下特点:
(1)静态局部变量在函数内定义,其生存期为整个源程序。
(2)静态局部变量只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则系统自动赋以0值。
(4)根据静态局部变量的特点,可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,并保存了前次被调用后留下的值。
根据这个特点,函数第一次调用时,将数组a变为35345,当第二次调用时,函数内的j值为2,所以会将数组a的第三个元素更改为7,最终结果为35745,选项D正确。
printf("%d,", S[k+j]); printf("%d\n", S(k-j));
【解析】考察宏定义的使用,根据该宏的定义,S(k+j)=(k+j)*k+j*2=39, S(k-j)=(k-j)*k-j*2=11,所以答案为39,11,选项B正确。
{ int x[10]={1,2,3,4,5,6,7,8,9,10}, i=0;
while(i<=4){exch(&x[i]); i++;}}
for(i=0; i<5; i++) printf("%d", x[i]);
A 2 4 6 8 10 B 1 3 5 7 9 C 1 2 3 4 5 D 6 7 8 9 10
【解析】通过分析代码,可以看出函数的作用是把数组某个元素的值变为这个元素位置加5后对应的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x的后五个元素的值,即6 7 8 9 10。
若要引用结构体变量std中的color成员,写法错误的是:
A std.color B ptr->color C std->color D(*ptr).color
【解析】考察结构体的用法,在引用结构体中的成员变量时,可以使用'.'来引用,当指针指向结构体时,可以使用'->'来指向结构体中的成员,C选项引用错误。
{ int num; char name[10]; int age; };
{ printf("%s\n", p->name); }
{ struct stu x[3]={{01,"zhang",20},{02,"wang",19},{03,"zhao",18}};
【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三个元素,所以输出name为Zhao。
【解析】考察移位操作,执行c=(a<<2)<<1语句时,首先是
a左移两位,等价于将a乘以4,计算得48,随后将48左移一位,相当于再乘以2,最终结果为c=96,因此选项D是正确的。
在以下函数中,无法用于向文件写入数据的是:
A. ftell
B. fwrite
C. fputc
D. fprintf
【解析】该题考查文件操作。函数ftell()用于获取文件位置指针当前相对于文件首的偏移字节数。在随机存取文件时,由于文件位置指针频繁移动,程序难以确定文件当前位置。通过调用ftell()函数,可以轻松确定文件当前位置。而ftell()函数不用于写入数据,其余三个选项均能向文件中写入数据。
关于计算机二级C考试的题目数量:
1. 大部分题目为原题,最多略有改动,大约300道题,涵盖了各种题型。主要确保前部分的填空和改错题正确,即可通过考试。
2. 最后一道编程题无需过多关注题目内容,关键是掌握不同题型的编程方法,注重思路。
3. 考试时间为120分钟,总分100分,总分达到60分可获得合格证书,90分以上获得优秀证书。
4. 编程题占总分24分(仅在程序运行出正确结果后才给分)。
5. 考试题目从题库中随机抽取,通常包含90%的原题和10%的新题。熟练掌握题库,多看书、多练习,基本能够通过考试。
6. 全国计算机等级考试(National Computer Rank Examination,简称NCRE)是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。
7. 程序的构成包括main函数和其他函数。
8. 程序应包含头文件、数据说明、函数的开始和结束标志以及程序中的注释。
9. 参考资料:全国计算机等级考试二级C_百度百科