全国计算机等级考试历年真题与机考题库 二级C语言 2016年无纸化考试专用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-10 20:36:06

点击下载

作者:全国计算机等级考试命题研究中心 未来教育教学与研究中心

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

全国计算机等级考试历年真题与机考题库 二级C语言 2016年无纸化考试专用

全国计算机等级考试历年真题与机考题库 二级C语言 2016年无纸化考试专用试读:

前言

全国计算机等级考试(NationalComputerRank Examination,NCRE)是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。全国计算机等级考试自1994年推出以来,受到了用人单位和学习人员的广泛关注,累计考生人数已达几千万。

根据教育部考试中心规定,全国计算机等级考试二级各科目于2012年下半年进行无纸化试点考试,并于2013年3月开始在全国范围内推行无纸化考试。为帮助参加全国计算机等级考试的考生熟悉考试题目,了解考试命题方向和考查重点,检验自己的应试水平,本书选取2015年~2014年考试新增的11套真题并独立编写成册,每册试题均有标准答案与详细解析。

本书配有光盘。光盘中包含2015年~2014年的11套真题及全套的无纸化真考题库。考生可以通过光盘中的智能考试系统自由选题进行练习,并且可以随时查看文字及视频解析。本光盘中的真考模拟系统提供100%真考环境,其操作界面、答题步骤、评分标准与真考完全一致。

熟练掌握本书及光盘中的试题,利用真考模拟系统多做练习,将有助于顺利通过考试。由于时间仓促,书中难免存在疏漏之处,欢迎广大读者批评指导。最后祝愿所有考生顺利过关!

2015年9月二级C语言真考题库新增试题精选

◆2015年9月二级C语言真考题库新增试题(1)

◆2015年9月二级C语言真考题库新增试题(2)

◆2015年9月二级C语言真考题库新增试题(3)

真考题库 高分特训

二级C语言

根据教育部考试中心《关于扩大全国计算机等级考试无纸化考试试点的通知(教试中心函[2012]102号)》的文件精神,计算机等级考试无纸化考试经过试点后,已经在全国范围内开考。如何在无纸化考试中取得高分?未来教育专家为您详细解读无纸化考试特点及高分策略。

一、无纸化考试解读

1.无纸化考试简介

考生在计算机上完成全部答题,原上机考试中的操作题除单题的分值变动外,其考试形式、考核内容和要求均不变。无纸化考试满分100分,其中选择题(原笔试部分)40分,上机操作题60分。总分达到60分方能取得合格证书。

2.无纸化考试的题型变化

二、无纸化考试高分策略

未来教育调研了高分考生复习过程中的备考经验,总结出科学高效备考方案如下。

问 无纸化考试有真考题库吗?

答 有真考题库,其中选择题40套,共1600题:上机操作题109套,共327题,题库详见本书及所附光盘。

问 无纸化考试考生如何抽取试题?

答 考生考试抽题时,从题库选择题中,按考点随机抽取40道题组成选择题部分:上机操作题从题库109套题目中随机抽取一套。

问 如何在无纸化考试中取得高分?

答 只要将本书及所附光盘申的题目练会做熟即可取得高分。

问 如何在无纸化上机考试时减少失误?

答 本书配套光盘中的模考软件,提供l00%真考环境,其操作界面、答题步骤、评分标准与真考完全一致,只要多上机练习即可。

2015年9月二级C语言真考题库新增试题(1)

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

一、选择题(每小题1分。共40分)(1)下列叙述中正确的是( )。(A)解决同一个问题的不同算法的时间复杂度一般是不同的(B)解决同一个问题的不同算法的时间复杂度必定是相同的(C)对同一批数据作同一种处理,如果数据存储结构不同,不同算法的时间复杂度肯定相同(D)对同一批数据作不同的处理,如果数据存储结构相同,不同算法的时间复杂度肯定相同(2)下列处理中与队列有关的是( )。(A)操作系统中的作业调度(B)执行程序中的过程调用(C)执行程序中的循环控制(D)二叉树的遍历(3)设栈的存储空间为S(1:m),初始状态为top=m+1。经过一系列入栈与退栈操作后,top=1。现又要将一个元素进栈,栈顶指针top值变为( )。(A)发生栈满的错误(B)2(C)m(D)0(4)设二叉树共有150个节点,其中度为1的节点有10个,则该二叉树中的叶子节点数为( )。(A)71(B)70(C)69(D)不可能有这样的二叉树(5)非空循环链表所表示的数据结构( )。(A)有根节点也有叶子节点(B)没有根节点但有叶子节点(C)有根节点但没有叶子节点(D)没有根节点也没有叶子节点(6)设二叉树中共有31个节点,其中的节点值互不相同。如果该二叉树的后序序列与中序序列相同,则该二叉树的深度为( )。(A)31(B)16(C)17(D)5(7)在最坏情况下,堆排序的时间复杂度是( )。(A)O(lgo2n)(B)O(nlog2n)(C)O(n2)(D)O(n1.5)(8)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(A)学籍管理系统(B)ERP系统(C)C编译程序(D)CAI软件(9)存储在计算机内有结构的数据集合是( )。(A)数据库(B)数据库系统(C)数据库管理系统(D)数据结构(10)在数据库技术中,为提高数据库的逻辑独立性和物理独立性,数据库的结构被划分成用户级、存储级和( )。(A)概念级(B)外部级(C)管理员级(D)内部级(11)以下叙述错误的是( )。(A)一个算法所包含的操作步骤应该是有限的(B)任何能通过编译和运行的算法都一定能得到所期望的结果(C)算法中每一条指令必须有确切的含义(D)算法可以用各种描述方法来进行描述(12)以下是正确C语言实型常量的是( )。(A).e-1(B)e-1(C)-1e(D)1e-1(13)以下叙述正确的是( )。(A)在C语言中分号是语句的组成部分(B)C语言程序由C语句组成,可以省略main函数(C)分号是C语句之间的分隔符(D)所有程序行都必须用分号结束(14)若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是( )。(A)scanf("%lf%lf%lf"&a,&b,&c);(B)scanf("%f%f%f",&a,&b,&c);(C)scanf("%lf%lf%lf",a,b,c);(D)scanf("%lf%lf%lf",&a,&b,&c);(15)有以下程序:

#include<stdio.h>

main( )

{intx=0x9;

printf("%c\n",'A'+x);

}

程序运行后的输出结果是( )。(A)I(B)J(C)K(D)H(16)设有定义:doublex=5.16894;,则语句printf("%lf\n",(int)(x*1000+0.5)/1000.);的输出结果是( )。(A)5.16900(B)5.16800(C)0.00000(D)输出格式说明符与输出项不匹配,产生错误信息(17)有以下程序:

#include<stdio.h>

main( )

{inta=0,b=0,c=0,d=0;

if(a=1) b=1;c=2;

else  d=3;

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

}

程序输出( )。(A)编译有错(B)0,0,0,3(C)1,1,2,0(D)0,1,2,0(18)有以下程序:

#include<stdio.h>

main( )

{inta=-2,b=2;

for(;++a&&--b;)

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

}

程序运行后的输出结果是( )。(A)0,1(B)0,0(C)1,-1(D)0,2(19)有以下程序:

#include<stdio.h>

main( )

{intt;

scanf("%d",&t);

if(t++ <6)printf("%d\n",t);

elseprintf("%d\n",t--);

printf("\n");

}

执行时输入:6<回车>,则输出结果是( )。(A)6(B)8(C)7(D)5(20)有以下程序:

#include<stdio.h>

main( )

{  charch='D';

while(ch >'A')

{ch--;

putchar(ch);

if(ch=='A')break;

putchar(ch+1);

}

}

程序运行后的输出结果是( )。(A)CB(B)BCA(C)CCBB(D)CDBCA(21)以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s>1000为止。

#include<stdio.h>

main( )

{  ints,n;

s=1;

n=1;

do

{n=n+1;s=s+n*n;}

while(s>1000);

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

}

程序运行后,不能得到正确结果,以下修改方案正确的是( )。(A)把while(s>1000);改为while(s<=1000);(B)把s=1;改为s=0;(C)把n=1;改为n=0;(D)把n=n+1;改为n=n*n;(22)有以下程序:

#include<stdio.h>

main( )

{  intm,n;

scanf("%d%d",&m,&n);

while(m!=n)

{while(m>n){m=m-n;}

while(n>m){n=n-m;}

}

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

该程序的功能是( )。(A)计算m和n的最小公倍数(B)计算m和n的最大公约数(C)计算m和n的差值(D)找出m和n中的较大值(23)有以下程序:

#include<stdio.h>

intadd(inta,intb){return (a+b);}

main( )

{ intk,(*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);(24)若有定义语句:

double x,y,*px,*py;

执行

px=&x;py=&y;

正确的输入语句是( )。(A)scanf("%lf%lf",x,y);(B)scanf("%f%f"&x,&y);(C)scanf("%f%f",x,y);(D)scanf("%lf%le",px,py);(25)以下定义数组的语句中错误的是( )。(A)intnum[][3]={{1,2},3,4,5,6 };(B)intnum[2][4]={{1,2},{3,4},{5,6} };(C)intnum[]={1,2,3,4,5,6 };(D)intnum[][4]={1,2,3,4,5,6};(26)有以下程序:

#include<stdio.h>

void fun(inta[ ],intn,intflag)

{  inti=0,j,t;

for(i=0;i<n-1;i++)

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

if(flag)

{if(a[i] <a[j] )

{t=a[i];a[i]=a[j];a[j]=t;}

}

else

{if(a[i] >a[j] )

{t=a[i];a[i]=a[j];a[j]=t;}

}

}

main( )

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

fun(c,4,1 );

fun(c+4,6,0 );

for(i=0;i<10;i++) printf("%d,",c[i] );

printf("\n");

}

程序运行后的输出结果是( )。(A)7,8,9,10,6,5,4,3,2,1,(B)10,9,8,7,6,5,4,3,2,1,(C)10,9,8,7,1,2,3,4,5,6,(D)1,2,3,4,5,6,7,8,9,10,(27)有以下程序:

#include<stdio.h>

main( )

{  inti,k=0,a[10];

for(i=0;i<10;i++) a[i]=i;

for(i=0;i<4;i++) k +=a[i] +i;

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

}

程序运行后的输出结果是( )。(A)10(B)16(C)6(D)12(28)有以下程序:

#include<stdio.h>

intnew_div(doublea,doubleb)

{return a/b +0.5;}

main( )

{printf("%d",new_div(7.8,3.1));}

程序运行后的输出结果是( )。(A)1(B)2(C)3(D)0(29)函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。

intfun(int*a,intn)

{ int*p,*s;

for(p=a,s=a;p-a<n;p++)

if(__________) s=p;

return *s;

}

在if语句下划线处应填入的选项是( )。(A)p>s(B)*p>*s(C)a[p]>a[s](D)p-a>p-s(30)有以下程序:

#include<stdio.h>

#include<string.h>

main( )

{ char str[][20]={"One*World","One*Dream!"},*p=str[1];

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

}

程序运行后的输出结果是( )。(A)10,One*Dream!(B)9,One*Dream!(C)9,One*World(D)10,One*World(31)有以下程序:

#include<stdio.h>

#include<string.h>

main( )

{  inti,len;

charb[]="Welcomeyou toBeijing!";

len=strlen(b);

for(i=0;i<len;i++)

if(b[i]=='')

{strcpy(b,b+i+1);

i=0;

}

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

程序运行后的输出结果是( )。(A)Beijing!(B)toBeijing!(C)WelcomeyoutoBeijing!(D)youtoBeijing!(32)有以下程序:

#include<stdio.h>

intf(intk )

{  staticintn=0;

intm=0;

n++;m++;k++;

return n+m+k;

}

main( )

{  intk;

for(k=0;k<2;k++) printf("%d,",f(k) );

printf("\n");

}

程序运行后的输出结果是( )。(A)3,5,(B)3,6,(C)3,7,(D)0,3,(33)有以下程序:

#include<stdio.h>

intm=12;

intfun(intx,inty)

{  staticintm=3;

m=x* y-m;

return (m);

}

main( )

{  inta=7,b=5;

m=fun(a,b )/m;

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

}

程序运行后的输出结果是( )。(A)2(B)1(C)3(D)0(34)有以下程序:

#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(35)以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。(A)extern和static(B)auto和static(C)register和static(D)register和extern(36)为了建立如图所示的存储结构(即每个节点含两个域,data是数据域,next是指向节点的指针域)则在( )处填入的选项是( )。

structlink{chardata;( )}node;(A)structlink *next;(B)link next;(C)link*next;(D)structlink next;(37)有以下程序:

#include<stdio.h>

#include<string.h>

typedefstructstu{

charname[10];

chargender;

intscore;

} STU;

void f(charname[10],chargender,intscore)

{  strcpy(name,"Sun");

gender=ˊmˊ;

score=370;

}

main( )

{STUb={"Zhao",'m',290},a={"Qian",'f',350};

b=a;

printf("%s,%c,%d,",b.name,b.gender,b.score);

f(b.name,b.gender,b.score);

printf("%s,%c,%d\n",b.name,b.gender,b.score);

}

程序运行后的输出结果是( )。(A)Qian,f,350,Sun,f,350(B)Qian,f,350,Qian,f,350(C)Qian,f,350,Sun,m,370(D)Zhao,m,290,Sun,m,370(38)有以下程序:

#include<stdio.h>

main( )

{  chara=3,b=6,c;

c=(a^b) <<2;

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

}

程序运行后的输出结果是( )。(A)5(B)1(C)20(D)18(39)以下叙述正确的是( )。(A)表达式sizeof(FILE*)==sizeof(int*)的值为真(B)文件指针的值是一个整数,它的值一定小于文件字节数(C)文件指针的值是所指文件的当前读取位置(D)使用fscanf函数可以向任意类型的文件中写入任意数量的字符(40)函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(A)fread(B)fscanf(C)fgets(D)getc

二、程序填空题

给定程序中,函数fun的作用是:不断从终端读入整数,由变量a统计大于0的个数,用变量c来统计小于0的个数,当输入0时结束输入,并通过形参pa和pb把统计的数据传回主函数进行输出。

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

注意:源程序存放在BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

void fun(int*px,int*py)

{

/**********found**********/

int【1】;

scanf("%d",&k );

/**********found**********/

while【2】

{if(k>0 ) a++;

if(k<0 ) b++;

/**********found**********/【3】;

}

*px=a;*py=b;

}

main( )

{intx,y;

fun(&x,&y);

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

}

三、程序修改题

给定程序modi1.c的主函数中,将a、b、c三个节点链成一个单向链表,并给各节点的数据域赋值,函数fun( )的作用是:累加链表节点数据域中的数据作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

typedefstructlist

{intdata;

structlist*next;

} LIST;

intfun(LIST*h)

{LIST*p;

/**********found**********/

intt;

p=h;

/**********found**********/

while(*p)

{

/**********found**********/

t=t+p.data;

p=(*p).next;

}

return t;

}

main( )

{LISTa,b,c,*h;

a.data=34;b.data=51;c.data=87;c.next=ˊ\0ˊ;

h=&a;a.next=&b;b.next=&c;

printf("总和=%d\n",fun(h));

}

四、程序设计题

请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。

注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#include<stdlib.h>

#defineM14

void NONO( );

void fun(char(*t)[M],int*a,int*c){

}

void get(char(*s)[M])

{inti,j; for(i=0;i<M;i++)

{ for(j=0;j<M;j++)

{ s[i][j]=65+rand( )%12;printf("%c",s[i][j]);}

printf("\n");

}

}

main( )

{chara[M][M];

intx,y;

get(a);

fun (a,&x,&y);

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

NONO( );

}

void NONO( )

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE*fp,*wf;

inti,j,x,y;

chara[M][M];

fp=fopen("c:\test\in.dat","r") ;

wf=fopen("c:\test\out.dat","w") ;

for(i=0;i<M;i++)

{for(j=0;j<M;j++)

{fscanf(fp,"%c",&a[i][j]);}

}

fun (a,&x,&y);

fprintf(wf,"A=%d\n",x) ;

fprintf(wf,"C=%d\n",y) ;

fclose(fp) ;

fclose(wf) ;

}

2015年9月二级C语言真考题库新增试题(2)

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

一、选择题(每小题1分。共40分)(1)下列叙述中错误的是( )。(A)数据结构中的数据元素不能是另一数据结构(B)数据结构中的数据元素可以是另一数据结构(C)空数据结构可以是线性结构也可以是非线性结构(D)非空数据结构可以没有根节点(2)为了降低算法的空间复杂度,要求算法尽量采用原地工作(in place)。所谓原地工作是指( )。(A)执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)(B)执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化(C)执行算法时不使用额外空间(D)执行算法时不使用任何存储空间(3)某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为( )。(A)m-1(B)m(C)1(D)0(4)某棵树只有度为3的节点和叶子节点,其中度为3的节点有8个,则该树中的叶子节点数为( )。(A)15(B)16(C)17(D)不存在这样的树(5)某二叉树共有530个节点,其中度为2的节点有250个,则度为1的节点数为( )。(A)29(B)30(C)249(D)251(6)若某二叉树中的所有节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,则该二叉树遍历序列中有序的是( )。(A)前序序列(B)中序序列(C)后序序列(D)以上说法均可以(7)将C语言的整数设为整数类I,则下面属于类I实例的是( )。(A)-103(B)10E3(C)10.3(D)“0103”(8)下列叙述中正确的是( )。(A)软件包括程序、数据和文档(B)软件包括程序和数据(C)软件包括算法和数据结构(D)软件包括算法和程序(9)软件生命周期是指( )。(A)软件的定义和开发阶段(B)软件的需求分析、设计与实现阶段(C)软件的开发阶段(D)软件产品从提出、实现、使用维护到停止使用退役的过程(10)下列叙述中正确的是( )。(A)数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能(B)数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件(C)数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少(D)数据库系统独立性较差,而文件系统独立性较好(11)关于程序模块化,以下叙述错误的是( )。(A)程序模块化可以提高程序运行的效率(B)程序模块化可以提高程序编制的效率(C)程序模块化可以提高程序代码复用率(D)程序模块化可以提高调试程序的效率(12)以下正确使用C语言标识符的是( )。(A)&3(B)#3(C)_3(D)-3(13)若有定义:inta,b,c;以下程序段的输出结果是( )。

a=11;b=3;c=0;

printf("%d\n",c=(a/b,a%b));(A)2(B)0(C)3(D)1(14)以下选项中合法的C语言常量是( )。(A)'C-STR'(B)2014.1(C)"\1.0(D)2EK(15)设有定义:intx,y,z;,且各变量已赋正整数值,则以下能正确表示代数式“”的 C语言表达式是( )。(A)1.0/x/y/z(B)1/x*y*z(C)1/(x*y*z)(D)1/x/y/(double)z(16)有以下程序:

#include<stdio.h>

main( )

{  chara,b,c,d;

scanf("%c%c",&a,&b);

c=getchar( );

d=getchar( );

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

}

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

12<CR>

34<CR>

则输出结果是( )。(A)12

3(B)12(C)1234(D)12

34(17)有以下程序:

#include<stdio.h>

main( )

{inta,b;

for(a=0;a<3;a++)

{scanf("%d",&b);

switch(b)

{default: printf("%d,",b+1);continue;

case1: printf("%d,",b+1);

case2:printf("%d,",b+1);continue;

}

}

}

执行时输入:123<回车>,则输出结果是( )。(A)2,2,3,4,4,4,(B)2,3,4,(C)2,2,3,4,(D)2,3,3,4,5,6,(18)有以下程序:

#include<stdio.h>

#include<math.h>

main( )

{  doublex,y,z;

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

z=x/y;

while(1)

if(fabs(z) >1.0 )

{x=y;y=x;z=x/y;}

elsebreak;

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

}

执行时输入:3.62.4<回车>,则输出结果是( )。(A)2.400000(B)1.500000(C)1.600000(D)2.000000(19)有以下程序:

#include<stdio.h>

main( )

{  inti;

charc;

scanf("%c",&c);

for(i=0;i<5;i++)

{

if(i>c) continue;

printf("%d,",i);

}

}

执行时输入:0<回车>后,则输出结果是( )。(A)5,(B)0,0,0,0,0,(C)0,1,2,3,4,(D)0,1,(20)以下程序拟实现计算 sum=1+1/2+1/3+… +1/50。

#include<stdio.h>

main( )

{  inti;doublesum;

sum=1.0;

i=1;

do

{i++;sum+=1/i;}

while(i<50);

printf("sum=%lf\n",sum);

}

程序运行后,不能得到正确结果,出现问题的语句是( )。(A)sum+=1/i;(B)while(i<50);(C)sum=1.0;(D)i++;(21)若有定义语句:

doublea,*p=&a;

以下叙述中错误的是( )。(A)定义语句中的 * 号是一个间址运算符(B)定义语句中的 * 号是一个说明符(C)定义语句中的p只能存放double类型变量的地址(D)定义语句中 *p=&a把变量a的地址作为初值赋给指针变量p(22)关于函数返回值,以下叙述正确的是( )。(A)函数可以返回整个结构体,即使结构体中有数组(B)函数只能返回基本数据类型的数值或指针(C)函数不可以返回一个数组(D)函数不能没有返回值(23)有以下程序:

#include<stdio.h>

intfun(int*b,intn)

{  inti,r=1;

for(i=0;i<=n;i++) r=r*b[i];

return r;

}

main( )

{  intx,a[]={2,3,4,5,6,7,8,9 };

x=fun(a,3 );

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

}

程序运行后的输出结果是( )。(A)24(B)720(C)120(D)6(24)若有语句:inta[3][4],(*p)[4];p=a;,则以下选项中叙述错误的是( )。(A)系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值(B)p+1代表a[1][0]的地址(C)p中将存放 a数组的首地址(D)p+2代表 a数组最后一行的首地址(25)有以下程序:

#include<stdio.h>

void change(char* array,intlen)

{for(len--;len>=0;len--)

array[len] +=1;

}

main( )

{inti;

chararray[5]="ABCD";

change(array,4);

for(i=0;i<4;i++)

printf("%c,",array[i]);

}

程序运行后的输出结果是( )。(A)B,C,D,E,(B)A,B,C,D,(C)C,D,E,F,(D)B,D,F,H,(26)设有以下程序段:

floata[8]={1.0,2.0};

intb[1]={0};

charc[]={"A","B"};

chard=="1";

以下叙述正确的是( )。(A)只有变量c的定义是合法的(B)只有变量a,b,c的定义是完全合法的(C)所有变量的定义都是完全合法的(D)只有变量a,b的定义是完全合法的(27)有以下程序:

#include<stdio.h>

main( )

{  inta[4],p,x,i;

for(i=3;i>0;i--)a[i-1]=i*2-1;

scanf("%d",&x);

i=0;

while(a[i] <x) i++;

p=i;

for(i=3;i>p;i--) a[i]=a[i-1];

a[p]=x;

for(i=0;i<4;i++) printf("%3d",a[i]);

printf("\\n");

}

执行时输入:2<回车>,则输出结果是( )。(A)1 2 3 4(B)5 4 3 1(C)1 2 3 5(D)3 2 1 4(28)有以下程序:

#include<stdio.h>

intfun(inta[],intn,intx)

{ int*p=a;

while(p<a+n &&*p!=x) p++;

if(p<a+n ) return p-a;

elsereturn -1;

}

main( )

{  inta[10]={1,2,3,4,5,6,7,8,9,10};

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

}

程序运行后的输出结果是( )。(A)9(B)-1(C)10(D)0(29)有以下程序:

#include<stdio.h>

main( )

{  charw[20],a[5][10]={"abcde","fghij","klmno","pqrst","uvwxy"};

inti;

for(i=0;i<5;i++)

w[i]=a[i][i];

w[5]='\0';

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

}

程序运行后的输出结果是( )。(A)ejoty(B)afkpu(C)agmsy(D)eimqu(30)语句printf("%d\n",strlen("\t\"\\\n\'\065\08AB"));的输出结果是( )。(A)6(B)7(C)8(D)9(31)有以下程序:

#include<stdio.h>

#include<string.h>

void fun(char*s,intm1,intm2 )

{ chart,*p;

p=s+m1;s=s+m2;

while(s<p )

{ t=*s;*s=*p;*p=t;

s++;p--;

}

}

main( )

{ charss[10]="012345678";

intn=6;

fun(ss,0,n-1 );

fun(ss,9,n );

fun(ss,0,9 );

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

}

程序运行后的输出结果是( )。(A)012345(B)876543210(C)876543(D)012345678(32)有以下程序:

#include<stdio.h>

intm=1,n=2;

void sub1(intm,intn)

{m+=2;n++;}

void sub2( )

{m++;n+=2;}

main( )

{ printf("%d,%d,",m,n);

sub1(4,5);

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

sub2( );

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

}

程序运行后的输出结果是( )。(A)1,2,1,2,2,4(B)1,2,6,6,7,8(C)1,2,2,4,2,4(D)1,2,6,6,2,4(33)有以下程序:

#include<ctype.h>

#include<stdio.h>

longfun(chars[] )

{  longn;intsign;

for(;isspace(*s);s++);

sign=(*s=='-')? -1 :1;

if(*s==ˊ+ˊ||*s=='-') s++;

for(n=0 ;isdigit(*s);s++)

n=10*n+(*s-'0');

return sign*n;

}

main( )

{  chars[]="-26a3";

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

}

程序运行后的输出结果是( )。(A)-263(B)2(C)0(D)-26(34)设有定义:

structcomplex

{intreal,unreal;} data1={1,8},data2;

则以下赋值语句中错误的是( )。(A)data2=(2,6);(B)data2=data1;(C)data2.real=data1.real;(D)data2.real=data1.unreal;(35)有以下程序:

#include<stdio.h>

#defineS(x) x*x/x

main( )

{  intk=6,j=3;

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

}

程序运行后的输出结果是( )。(A)11,11(B)29,29(C)26,29(D)121,121(36)若有定义:

typedefint*T[10];

Ta;

则以下选项与上述定义中a的类型完全相同的是( )。(A)int*a[10];(B)int(*a)[10];(C)inta[10];(D)int(*a[10])( );(37)有以下程序:

#include<stdio.h>

main( )

{ FILE*fp;

inti,a[6]={1,2,3,4,5,6},k;

fp=fopen("data.dat","w+");

for(i=0;i<6;i++)

fprintf(fp,"%d\n",a[5-i]);

rewind(fp);

for(i=0;i<6;i++)

{fscanf(fp,"%d",&k);

printf("%d,",k);

}

fclose(fp);

}

程序运行后的输出结果是( )。(A)6,5,4,3,2,1,(B)1,2,3,4,5,6,(C)1,1,1,1,1,1(D)6,6,6,6,6,6,(38)有以下程序:

#include<stdio.h>

#include<stdlib.h>

void fun(double*p1,double*p2,double*s)

{s=(double* )calloc(1,sizeof(double) );

*s=*p1 +*p2;

}

main( )

{ doublea[2]={1.1,2.2 },b[2]={10.0,20.0 },*q=NULL;

fun(a,b,q );

printf("%5.2f\n",*q);

}

程序运行后的结果是( )。(A)有运行错误(B)输出11.10(C)输出12.10(D)输出21.10(39)若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是( )。(A)fget(fp,ch);(B)fputc(ch,fp);(C)fprintf(fp,"%c",ch);(D)fwrite(&ch,sizeof(ch),1,fp);(40)有以下程序:

#include<stdio.h>

structball

{

charcolor[10];

intdim;

};

main( )

{

structballlist[2]={{"white",2},{"yellow",3}};

printf("%s:%d\n",(list+1)->color,list->dim);

}

程序运行后的输出结果是( )。(A)yellow:3(B)yellow:2(C)white:2(D)white:3

二、程序填空题

函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数 is-leap用来判别某一年是否为闰年。

例如,若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。

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

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

不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

intisleap(intyear)

{intleap;

leap=(year%4==0 &&year%100!=0 ||year%400==0);

/**********found**********/

return【1】;

}

intfun(intyear,intmonth,intday)

{int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int days=0 ,i;

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

days=days+table[i];

/**********found**********/

days=days+【2】;

if(isleap(year) &&month>2 )

/**********found**********/

days=days+【3】;

return days;

}

main( )

{intyear,month,day,days;

printf("请输入年、月、日:");

scanf("%d%d%d",&year,&month,&day);

days=fun(year,month,day);

printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days);

}

三、程序修改题

给定程序MODI1.C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第1门课程的平均分是:76.125000

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

typedefstruct

{charnum[8];

doublescore[2];

}STU;

doublefun(STUstd[],intn)

{inti;

/**********found**********/

doublesum;

/**********found**********/

for(i=0;i<2 ;i++)

/**********found**********/

sum+=std[i].score[1];

return sum/n;

}

main( )

{STUstd[ ]={"N1001",76.5,82.0 ,"N1002",66.5,73.0,

"N1005",80.5,66.0,"N1006",81.0,56.0 };

printf("第1门课程的平均分是:%lf\n",fun(std,4) );

}

四、程序设计题

请编写函数fun,其功能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数据为123,则输出结果为:输入的数字是3位。

注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

void NONO( );

intfun(intn)

{

}

main( )

{intn,place;

do{

printf("请输入一个4位以内的正整数:");

scanf("%d",&n);

} while(n<0 ||n>9999);

place=fun(n);

printf("输入的数字是%d位\n",place);

NONO( );

}

void NONO( )

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE*fp,*wf;

inti,n,place;

fp=fopen("c:\test\in.dat","r") ;

wf=fopen("c:\test\out.dat","w") ;

for(i=0;i<10;i++)

{

fscanf(fp,"%d ",&n);

place=fun(n);

fprintf(wf,"%d\n",place);

}

fclose(fp) ;

fclose(wf) ;

}

2015年9月二级C语言真考题库新增试题(3)

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

一、选择题(每小题1分。共40分)(1)下列叙述中正确的是( )。(A)程序可以作为算法的一种表达方式(B)算法的有穷性是指算法的规模不能太大(C)算法的复杂度用于衡量算法的控制结构(D)算法的效率与数据的存储结构无关(2)某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m-1,rear=m,则该循环队列中的元素个数为( )。(A)m-1(B)1(C)m(D)0(3)能从任意一个节点开始没有重复地扫描到所有节点的数据结构是( )。(A)循环链表(B)双向链表(C)二叉链表(D)有序链表(4)某棵树中共有25个节点,且只有度为3的节点和叶子节点,其中叶子节点有7个,则该树中度为3的节点数为( )。(A)不存在这样的树(B)7(C)8(D)6(5)在最坏情况下,二分查找法的时间复杂度为( )。(A)(B)(C)log2n(D)n(6)某二叉树共有730个节点,其中度为1的节点有30个,则叶子节点个数为( )。(A)不存在这样的二叉树(B)351(C)1(D)350(7)软件开发中需求分析的主要任务是( )。(A)定义和描述目标系统“做什么”(B)获取需求(C)给出软件解决方案(D)需求评审(8)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(A)学生成绩管理系统(B)ERP系统(C)办公自动化系统(D)UNIX系统(9)医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是( )。(A)多对多(B)一对一(C)多对一(D)一对多(10)学生选课成绩表的关系模式是SC(S#,C#,G),其中S#为学号,C#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为( )。(A)πS#(σC#=2∧G≥60(SC))(B)σG≥60(SC)(C)σC#=2∧G≥60(SC)(D)πS#(σC#=2(SC))(11)若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是( )。(A)inta=b=c=d=1;(B)inta=1,b=1,c=1,d=1;(C)inta,b,c,d;a=b=c=d=1;(D)inta,b,c,d=1;a=b=c=d;(12)若有定义:charc;doubled;程序运行时输入:1 2<回车>,能把字符1输入给变量c、数值2输入给变量d的输入语句是( )。(A)scanf("%d%lf",&c,&d);(B)scanf("%c%lf",&c,&d);(C)scanf("%c%f",&c,&d);(D)scanf("%d%f",&c,&d);(13)输出语句:printf("%d\n",11+011);的输出结果是( )。(A)20(B)22(C)022(D)021(14)以下叙述正确的是( )。(A)有些算法不能用3种基本结构来表达(B)C语言程序不编译也能直接运行(C)结构化程序的3种基本结构是循环结构、选择结构、顺序结构(D)如果C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序(15)若有定义:doublex;,则表达式:x=0,x+10,x++的值是( )。(A)11.0(B)10.0(C)0.0(D)1.0(16)有以下程序:

#include<stdio.h>

main( )

{  intx=1,y=0,a=0,b=0;

switch (x)

{case1:

switch(y)

{case0: a++;break;

case1: b++;break;

}

case2: a++;b++;break;

case3: a++;b++;

}

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

}

程序的运行结果是( )。(A)a=2,b=2(B)a=2,b=1(C)a=1,b=1(D)a=1,b=0(17)以下程序段中的变量已正确定义

for(i=0;i<4;i++,i++)

for(k=1;k<3;k++);printf("*");

该程序段的输出结果是( )。(A)*(B)****(C)**(D)********(18)有以下程序:

#include<stdio.h>

main( )

{  charc;

for(;(c=getchar( )) !='#';)

{if(c>='a'&&c<='z') c=c-'a'+'A';

putchar(++c);

}

}

执行时输入:aBcDefG##<回车>,则输出结果是( )。(A)AbCdEFg(B)ABCDEFG(C)BCDEFGH(D)bcdefgh(19)有以下程序:

#include<stdio.h>

intf(intx);

main( )

{intn=1,m;

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

}

intf(intx)

{return x*2;}

程序运行后的输出结果是( )。(A)4(B)2(C)8(D)1(20)关于地址和指针,以下叙述正确的是( )。(A)可以通过强制类型转换让char型指针指向double型变量(B)函数指针p指向一个同类型的函数f时,必须写成:p=&f;(C)指针p指向一个数组f时,必须写成:p=&f;(D)一个指针变量p可以指向自身(21)有以下程序:

#include<stdio.h>

#defineN4

intfun(inta[][N] )

{inti,j,x=0;

for(i=0;i<N;i++)

for(j=0;j<N;j++)

if(i==j)

x+=a[N-1-j][i];

return x;

}

main( )

{intx[N][N]={{1,2,3,4},

{5,6,7,8},

{9,10,11,12},

{13,14,15,17}},y;

y=fun(x);

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

}

程序运行后的输出结果是( )。(A)34(B)35(C)28(D)59(22)有以下程序:

#include<stdio.h>

#defineN3

void fun(intx[][N],int*r1,int*r2 )

{inti,j;

*r1=*r2=0;

for(i=0;i<N;i++)

{j=N-(i+1);

if(x[*r1][*r2] <x[i][j]){*r1=i;*r2=j;}

}

}

main( )

{  inta[N][N]={1,5,7,9,2,6,4,3,8 },i,j;

fun(a,&i,&j);

printf("%d\n",a[i][j]);

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载