全国计算机等级考试二级C语言模拟试题及答案(二)一、选择题(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A)GEDHFBCAB)DGEBHFCAC)ABCDEFGHD)ACBFEDHG正确答案:B(2)树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2正确答案:A(3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D)任意顺序正确答案:B(4)在设计程序时,应采纳的原则之一是A)不限制goto语句的使用B)减少或取消注解行C)程序越短越好D)程序结构应有助于读者理解正确答案:D(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和A)对象成分B)变量成分C)语句成分D)传输成分正确答案:D(6)下列叙述中,不属于软件需求规格说明书的作用的是A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)作为确认测试和验收的依据D)便于开发人员进行需求分析正确答案:D(7)下列不属于软件工程的3个要素的是A)工具B)过程C)方法D)环境正确答案:D(8)单个用户使用的数据视图的描述称为A)外模式B)概念模式C)内模式D)存储模式正确答案:A(9)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域正确答案:B(10)SQL语言又称为A)结构化定义语言B)结构化控制语言C)结构化查询语言D)结构化操纵语言正确答案:C(11)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用正确答案:D(12)在C语言中,退格符是A)\nB)\tC)\fD)\b正确答案:D(13)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义正确答案:A(14)在C程序中,判逻辑值时,用非0表示逻辑值真,又用0表示逻辑值假。在求逻辑值时,用()表示逻辑表达式值为真,又用()表示逻辑表达式值为假。A)10B)01C)非0非0D)11正确答案:A(15)在C语言中,运算对象必须是整型数的运算符是A)%B)\C)%和\D)**正确答案:A(16)字符型数据在机器中是用ASCII码表示的,字符5和7在机器中表示为A)10100011和01110111B)01000101和01100011C)00110101和00110111D)01100101和01100111正确答案:C(17)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25&&b--=2&&c?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=19B)***a=26,b=14,c=19C)###a=25,b=13,c=19D)###a=26,b=14,c=19正确答案:C(18)若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是A)2.500000B)2.750000C)3.500000D)0.000000正确答案:A(19)下列程序段的输出结果是:inta=1234;floatb=123.456;doublec=12345.54321;printf(%2d,%2.1f,%2.1f,a,b,c);A)无输出B)12,123.5,12345.5C)1234,123.5,12345.5D)1234,123.4,1234.5正确答案:C(20)若运行以下程序时,从键盘输入ADescriptorCR(CR表示回车),则下面程序的运行结果是#includestdio.hmain(){charc;intv0=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=7,v1=4,v2=7B)v0=8,v1=4,v2=8C)v0=11,v1=4,v2=11D)v0=13,v1=4,v2=12正确答案:D(21)设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次正确答案:B(22)有如下程序main(){floatx=2.0,y;if(x0.0)y=0.0;elseif(x10.0)y=1.0/x;elsey=1.0;printf(%f\n,y);}该程序的输出结果是A)0.000000B)0.250000C)0.500000D)1.000000正确答案:D(23)执行下面的程序段后,变量k中的值为intk=3,s[2];s[0]=k;k=s[1]*10;A)不定值B)33C)30D)10正确答案:A(24)以下程序段的描述,正确的是x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误正确答案:C(25)以下选项错误的是A)main(){intx,y,z;x=0;y=x-1;z=x+y;}B)main(){intx,y,z;x=0,y=x+1;z=x+y;}C)main(){intx;intinty;x=0,y=x+1;z=x+y;}D)main(){intx,y,z;x=0;y=x+1;z=x+y,}正确答案:D(26)有如下程序段inta=14,b=15,x;charc=′A′;x=(a&&b)&&(c′B′);执行该程序段后,x的值为A)tureB)falseC)0D)1正确答案:D(27)下列程序执行后的输出结果是voidfunc1(inti);voidfunc2(inti);charst[]=hello,friend!;voidfunc1(inti){printf(%c,st[i]);if(i3){i+=2;func2(i);}}voidfunc2(inti){printf(%c,st[i]);if(i3){i+=2;func1(i);}}main(){inti=0;func1(i);printf(\n);}A)helloB)helC)hloD)hlm正确答案:C(28)以下函数返回a所指数组中最大值所在的下标值fun(int*a,intn){inti,j=0,p;p=j;for(i=j;in;i++)if(a[i]a[p])_________;return(p);}在下划线处应填入的内容是A)i=pB)a[p]=a[i]C)p=jD)p=I正确答案:D(29)下面说明不正确的是A)chara[10]=china;B)chara[10],*p=a;p=chinaC)char*a;a=china;D)chara[10],*p;p=a=china正确答案:D(30)以下程序的输出结果是#includestdio.hvoidprt(int*x,int*y,int*z){printf(%d,%d,%d\n,++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A)11,42,3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,2112,42,22正确答案:B(31)若有函数内部说明:inta[3][4];则数组a中各元素A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0正确答案:C(32)有如下程序main(){chars[]=ABCD,*p;for(p=s+1;ps+4;p++)printf(%s\n,p);}该程序的输出结果是A)ABCDBCDCDDB)ABCDC)BCDD)BCDCDD正确答案:D(33)下列程序执行后的输出结果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i9;i++)p[i]=i+1;printf(%d\n,a[1][2]);}A)3B)6C)9D)随机数正确答案:B(34)定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是for(k=0;k3;k++)printf(%d,a[k][k]);A)753B)951C)963D)741正确答案:B(35)下列程序执行后的输出结果是main(){chararr[2][4];strcpy(arr,you);strcpy(arr[1],me);arr[0][3]=′&′;printf(%s\n,arr);}A)you&meB)youC)meD)err正确答案:A(36)有以下函数charfun(char*p){returnp;}该函数的返回值是A)无确切的值B)形参p中存放的地址值C)一个临时存储单元的地址D)形参p自身的地址值正确答案:B(37)以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准正确答案:C(38)有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i3;i++)j+=f(i);printf(%d\n,j);}程序运行后的输出结果是A)4B)3C)2D)1正确答案:B(39)设有如下定义:strucksk{inta;floatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;正确答案:C(40)以下对结构体类型变量的定义中,不正确的是A)typedefstructaa{intn;floatm;}AA;AAtdl;B)#defineAAstructaaAA{intn;floatm;}tdl;C)struct{intn;floatm;}aa;structaatdl;D)struct{intn;floatm;}tdl;正确答案:C(41)若说明int*p,n;则通过语句scanf能够正确读入数据的程序段是A)p=&n;scanf(%d,&p);B)p=&n;scanf(%d,*p);C)scanf(%d,n);D)p=&n;scanf(%d,p);正确答案:D(42)在下述程序中,判断ij共执行的次数是main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(ij){printf(%d,s);break;}s+=i;}}A)4B)7C)5D)6正确答案:D(43)以下4个选项中,不能看做一条语句的是A);B)a=5,b=2.5,c=3.6;C)if(a5);D)if(b!=5)x=2;y=6;正确答案:D(44)在C语言中,变量的隐含存储类别是A)autoB)staticC)externD)无存储类别正确答案:A(45)若有以下程序#includestdio.hvoidf(in