二级C语言笔试考点相关真题及答案解析.doc_第1页
二级C语言笔试考点相关真题及答案解析.doc_第2页
二级C语言笔试考点相关真题及答案解析.doc_第3页
二级C语言笔试考点相关真题及答案解析.doc_第4页
二级C语言笔试考点相关真题及答案解析.doc_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 C语言概述1.1 C语言基础知识1.【2011年9月选择题第11题】以下叙述中错误的是_。A)C语言编写的函数源程序,其文件名后缀可以是CB)C语言编写的函数都可以作为一个独立的源程序文件C)C语言编写的每个函数都可以进行独立的编译并执行D)一个C语言程序只能有一个主函数 参考答案:C【解析】C语言编写的每个函数可以被独立编译,但是除主函数外不能独立执行。2.【2011年3月选择题第11题】计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行D)以上说法都不对 参考答案:A【解析】解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。编译程序是把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。3.【2011年3月选择题第12题】以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件 参考答案:D【解析】C语言的可执行程序是由一系列机器指令组成的,用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离C语言集成开发环境。故答案为D)。1.2 常量、变量和数据类型4.【2011年9月选择题第13题】以下选项中关于C语言常量的叙述错误的是。A)所谓常量,是指在程序运行过程中,其值不能被改变的量B)常量分为整型常量、实型常量、字符常量和字符串常量C)常量可分为数值型常量和非数值型常量D)经常被使用的变量可以定义成常量 参考答案:D【解析】常量是其值不可变化的量。常量分为数字常量和字符常量。在C语言中,常量多是通过符号常量来表示的。数字常量又包括整形常量和浮点型常量,浮点型常量又称实数。在程序中不希望被改变的变量才定义为常量,而不是经常使用的变量。5.【2011年9月选择题第14题】若有定义语句:int a=10;double b=3.14;,则表达式A+a+b值的类型是_。A)char B)int C)double D)float 参考答案:C【解析】本题考查数据类型的自动转换,C语言语法规定,当不同的变量相加时按最长的变量对齐,即转换优先级为:char int float double。6.【2011年9月选择题第21题】以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)_。 A)printf(%cn,a-32);B)printf(%dn,A); C)printf(%cn,65);D)printf(%cn,B-1); 参考答案:B【解析】A)、C)、D)三个选项的输出格式都是%c,只有B)的输出格式是%d,只会输出数字65,所以应选择B)。7.【2011年9月填空题第12题】有以下程序 #include main() int c3=0,k,i; while(k=getchar()!=n) ck-A+; for(i=0;i3;i+) printf(%d,ci); printf(n); 若程序运行时从键盘输入ABCACC,则输出结果为_【12】_。 参考答案:213【解析】当输入A时,a0+;当输入B时,a1+;当输入C时,a2+;直到遇到回车循环停止,题中共输入2个A,1个B,3个C,所以输出结果为213。8.【2011年3月选择题第13题】以下选项中不能用作C程序合法常量的是A)1,234B) 123C)123D)x7G 参考答案:A【解析】常量是在程序运行过程中,其值不能被改变的量。常量类型包括:整型常量、实例常量、字符常量、字符串常量和符号常量。B)选项为字符常量,表示八进制数123代表的ASCII字符;C)选项为整型常量;D)选项为字符串常量。9.【2011年3月选择题第14题】以下选项中可用作C程序合法实数的是A).1e0B)3.0e0.2C)E9D)9.12E 参考答案:A【解析】浮点型常量有十进制小数形式和指数形式。指数形式要求字母e(或者E)之前必须有数字,且e后面的指数必须为整数。B)、C)、D)都是不合法的指数形式,故答案为A)。10.【2011年3月填空题第8题】有以下程序(说明:字符0的ASCIl码值为48)#includemain() char c1,c2;scanf(%d,&c1);c2=c1+9;printf(%c%cn,c1,c2);若程序运行时从键盘输入48,则输出结果为 【8】 。 参考答案:09【解析】本题中通过ASCII码对字符变量赋值,由于字符0的ASCII码是48,因此字符变量c1为0,c2的ASCII码比c1大9,因此c2为9。11.【2010年9月选择题第13题】以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数 参考答案:B【解析】C程序在运行过程中所有计算都以二进制方式进行,所以A)正确B)错误。所有C程序先编译再链接,全都无误后才能运行。C程序中整型变量用于存放整数,实型变量用于存放浮点数。所以,本题答案为B)。12.【2010年9月选择题第15题】以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0 C)字符斜杠: D)字符串:007 参考答案:D【解析】A)选项中1,200不能表示整数1200。B)选项中应表示为1.5E2。在C语言中,反斜杠是转义符,其后必须跟有其他字符,所以选项C)也是错误的。D)选项正确。13.【2010年3月选择题第13题】以下C语言用户标识符中,不合法的是A)_1 B)AaBc C)a_b D)a-b 参考答案:D【解析】标识符由字母、下划线、数字三个方面组成,开头必须是字母或下划线。14.【2010年3月选择题第16题】以下关于C语言数据类型使用的叙述中错误的是A)若要准确无误差地表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如人员信息等含有不同类型的相关数据,应自定义结构体类型D)若只处理真和假两种逻辑值,应使用逻辑类型 参考答案:D【解析】C语言中没有逻辑类型,若只处理真或假两种逻辑值,可以使用整型数1或0表示,故选D。15.【2009年9月选择题第12题】以下选项中,能用作用户标识符的是_。A)void B) 8_8C)_0_ D)unsigned 参考答案:C【解析】 C语言的标识符命名规则为:只能由字母、数值和下划线3种字符组成;第一个字符必须是字母或下划线;不能与C语言中的关键字或保留字相同。16.【2009年9月选择题第22题】有以下定义语句,编译时会出现编译错误的是_。A)chara=a;B)chara=n;C)chara=aa;D)chara=x2d; 参考答案:C【解析】 aa是字符串,不用加上单引号。17.【2009年3月选择题第11题】以下选项中合法的标识符是_。A)1_1 B)1-1 C)_11 D)1_ _ 参考答案:C【解析】标识符命名规则:标识符必须由字母(az或AZ)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(09)组成;大小写字母表示不同意义,如cout和Cout代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。因此,本题正确答案为C)。18.【2009年3月选择题第12题】若函数中有定义语句:int k;,则_。A)系统将自动给k赋初值0B)这时k中的值无定义C)系统将自动给k赋初值-1D)这时k中无任何值 参考答案:B【解析】用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中存放任何值,此时变量中的值是无确定的,称变量值无意义。因此,本题正确答案为B)。19.【2009年3月选择题第13题】以下选项中,能用作数据常量的是_。A)o115B)0118C)1.5e1.5D)115L 参考答案:D【解析】 整型常量和实型常量统称为数值型常量。本题中A)项是数字和字符的组合,不能构成数值型常量。B)项以0开头代表该常量是一个8进制数,但其后面的数字中又出现了8,因此不正确。C)项用指数形式表示实型常量,但e后面必须为整数,不正确。D)项中一个常量后面加字母L表示长整型数据。因此,本题答案为D)。第二章 运算符与表达式2.1 C语言运算符简介20.【2010年9月选择题第38题】有以下程序#includemain()int s,t,A=10;double B=6; s=sizeof(A); t=sizeof(B); printf(%d,%dn,s,t);在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6 参考答案:C【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC6中整型占4个字节,双精度实型占8个字节,所以选C)。2.2 算术运算符和算术表达式21.【2011年9月填空题第7题】以下程序运行后的输出结果是_【7】_。 #include main() int a=37; a%=9;printf(%dn,a); 参考答案:1【解析】本题考查的是取余运算。37%9 商为4,余数为1,所以输出的值为1。22.【2011年3月选择题第18题】有以下程序#includemain() int x=011;printf(%dn,+x);程序运行后的输出结果是A)12B)11C)10D)9 参考答案:C【解析】x=011表示把八进制的11赋值给变量x,因此x的值为十进制的9,程序运行的结果输出变量x自加运算后的十进制值,即10。23.【2011年3月填空题第6题】以下程序运行后的输出结果是 【6】 。#includemain() int a;a=(int)(double)(3/2)+0.5+(int)1.99*2);printf(%dn,a); 参考答案:3【解析】本题中3/2=1,(double)(3/2)=1,(int)1.99*2=1*2=2,因此(int)(1+0.5+2)=(int)3.5=3。24.【2010年3月选择题第12题】以下关于C语言的叙述中正确的是A)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示 参考答案:A【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。25.【2010年3月填空题第13题】以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#includemain()int x=256; printf(%d-%d-%dn,【13】,x/10%10,x/100); 参考答案:x%10【解析】x=256,x%10=6。26.【2009年9月选择题第14题】表达式:(int)(double)9/2)-(9)%2的值是_。A)0 B)3 C)4 D)5 参考答案:B【解析】 (int)(double)9/2)的值为4,(9)%2的值为1,因此(int)(double)9/2)-(9)%2的值为3。27.【2009年9月填空题第6题】若有定义语句:int a=5;,则表达式:a+的值是_【6】_。 参考答案:5【解析】 a+的含义是在使用a值以后,使a值加1,所以a+的值为5。28.【2009年9月填空题第7题】若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值为_【7】_。 参考答案:1【解析】 y=(int)(x/5)%2=(int)(3.4)%2=3%2=1。29.【2009年3月填空题第6题】表达式(int)(double)(5/2)+2.5)的值是_【6】_。 参考答案:4【解析】计算5/2=2,其结果先转换为double类型,即2.000000,然后加上2.5为4.5000000,再转换为int型,所以结果为4。2.3 赋值运算符和赋值表达式30.【2011年9月选择题第15题】若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为_。A)1.9 B)1 C)2 D)2.4 参考答案:B【解析】x的值为12,y的值为8,那么x/y的值就是1,因为z的类型是int,所以0.9+1变成int的值就是1,所以选择B)。31.【2011年3月选择题第15题】若有定义语句:int a=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); 参考答案:A【解析】在A)选项中,赋值语句b=4先把4赋值给整型变量b,之后执行(b=4)=3是把常量3赋值给常量4,但是由于C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。32.【2010年9月选择题第14题】有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x 参考答案:B【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。33.【2009年9月选择题第15题】若有定义语句:intx=10;,则表达式x-=x+x的值为_。A)-20 B)-10 C)0 D)10 参考答案:B【解析】 x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。34.【2010年9月选择题第16题】表达式a+=a-=a=9的值是A)9 B)-9 C)18 D)0 参考答案:D【解析】题干中的表达式可以分解为以下表达式: a=9; a=a-a 即a=9-9,此时a的值为0; a=a+a 即a=0+0,此时a的值为0。故本题的答案为D)。35.【2009年3月选择题第14题】设有定义:int x=2;,以下表达式中,值不为6的是_。A)x*=x+1B)x+,2*x C)x*=(1+x)D)2*x,x+=2 参考答案:D【解析】 本题考察逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为自左至右。A)项和C)项的结果是一样的,可展开为:x=x*(x+1)=2+,因为+运算符有自加功能,逗号之前执行后x的值为3,逗号后的值就是整个表达式的值,即6;D)项逗号之前并未给x赋值,所以表达式的值就是x+=2的值,即4。因此,本题答案为D)。2.4 位运算36.【2011年9月选择题第38题】有以下程序 #include main() int a=2,b; b=a2;printf(%dn,b); 程序运行后的输出结果是_。A)2 B)4 C)6 D)8 参考答案:D【解析】考查移位操作,b的值是由a左移两位,所以b的值为222=8。37.【2011年3月选择题第39题】有以下程序#includemain() unsigned char a=8,c;c=a3;printf(%dn,c);程序运行后的输出结果是A)32B)16C)1D)0 参考答案:C【解析】本题中将8赋值给字符变量a,则a的二进制为00001000,a3的位运算是把a向右移动三位,结果为00000001,输出其十进制的值1。38.【2010年9月选择题第40题】有以下程序#includemain()short c=124; c=c; printf(%dn,c);若要使程序的运行结果为248,应在下划线处填入的是A)2 B)| 248 C)&0248 D)1 参考答案:D【解析】短整型在存储时占用16位,按照移位运算如果右移两位就等于原数除以4,结果为31,如果左移一位相当于原数乘以2结果为248,所以选择D)。39.【2010年3月选择题第39题】有以下程序#includemain()int a=2,b=2,c=2; printf(%dn,a/b&c);程序运行后的输出结果是A)0 B)1 C)2 D)3 参考答案:A【解析】对于a/b&c,先求a/b,得到1,然后求1&c(即按位与操作),显然得0。40.【2009年9月选择题第39题】若有以下程序段:intr=8;printf(%dn,r1);输出结果是_。A)16 B)8 C)4 D)2 参考答案:C【解析】 8用二进制表示为1000,右移1位后为0100,即十进制4。41.【2009年3月选择题第39题】有以下程序:#include main() int a=5,b=l,t; t=(a2)|b;printf(%dn,t); 程序运行后的输出结果是_。A)2l B)11 C)6 D)1 参考答案:A【解析】按位或运算符|是双目运算符,其功能是参与运算的两数各对应的二进位相或。左移运算符是双目运算符,其功能把左边的运算数的各二进位全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补0。将5变换为二进制数为101,左移2位后为10100,1转换为二进制数为00001,10100与00001进行或运算后为10101,再将其转换为十进制数为21。因此,本题答案为A)。第三章 基本语句3.1 C语句概述42.【2009年9月选择题第16题】有以下程序:#include main()inta=1,b=0; printf(%d,b=a+b); printf(%dn,a=2*b);程序运行后的输出结果是_。A)0,0 B)1,0 C)3,2 D)1,2 参考答案:D【解析】 执行第一个printf语句时,b=a+b=1,所以输出1,执行第二个printf语句时,a=2*b=2,所以输出结果为2。3.2 赋值语句3.3 输入输出概念及其实现3.4 单个字符的输入与输出3.5 数据格式的输入与输出43.【2011年9月选择题第16题】若有定义:int a,b;,通过语句scanf(%d;%d,&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是_。A)35 B)3,5 C)3;5 D)35 参考答案:C【解析】在C语言中scanf函数中输入数据时要严格按照所规定的样式输入。44.【2011年9月填空题第6题】若程序中已给整型变量a和b赋值10和20,请写出按以下格式输出a、b值的语句_【6】_。 *a=10,b=20* 参考答案:printf(*a=%d,b=%d*,a,b);【解析】本题考查的是printf函数的用法, prinrf函数实际上是将所有参数按字符输出。45【2010年9月填空题第6题】以下程序运行后的输出结果是【6】。#includemain()int a=200,b=010; printf(%d%dn,a,b); 参考答案:2008【解析】整型变量a的值为200,b的值010是用八进制表示的10即十进制的8,最后输出格式均为%d,即十进制格式,所以输出为2008。46【2010年9月填空题第7题】有以下程序#includemain()int x,y; scanf(%2d%1d,&x,&y);printf(%dn,x+y);程序运行时输入:1234567,程序的运行结果是【7】。 参考答案:15【解析】可以指定输入数据所占列宽,系统自动按所指定的格式截取所需数据。%2d即将输入数据的2个列宽的数据赋给变量 x ,因为输入的为1234567,所以前两个列宽的数据为12,即x的值为12,同理%1d即把输入数据中前两个列宽所在数据后的一个列宽的数据赋给变量y,所以y的值为3 ,所以x+y的值为15。47【2010年3月选择题第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)1234 B)12 C)12 D)12 3 34 参考答案:C【解析】程序根据用户输入分别给字符型变量a、b、c、d赋值为1、2、3,因此输出到屏幕得到选项C中的格式。48【2010年3月选择题第22题】有以下程序,其中k的初值为八进制数#includemain() int k=011; printf(%dn,k+);程序运行后的输出结果是A)12 B)11 C)10 D)9 参考答案:D【解析】011转换成十进制为9,并且k+表示先使用k的值,再使k的值加1,所以输出值为9。49【2009年9月选择题第13题】阅读以下程序:#include main()int case;float printF; printf(请输入2个数:); scanf(%d%f,&case,&printF); printf(% d%fn,case,printF);该程序在编译时产生错误,其出错原因是_。A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值 参考答案:A【解析】 标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字case,所以将出现错误。50【2009年9月选择题第23题】有以下程序:#include main()char cl,c2; cl=A+8-4; c2=A+8-5; printf(%c,%dn,cl,c2);已知字母A的ASCIl码为65,程序运行后的输出结果是_。A)E,68 B)D,69 C)E,D D)输出无定值 参考答案:A【解析】 c1输出字符的ASCII码比字母A大4,即字母E;c2以十进制数字形式输出,因此可以判断本题答案为A)。51【2009年3月选择题第15题】程序段:int x=12;double y=3.141593;printf(%d%8.6f,x,y);的输出结果是_。A)123.141593B)12 3.141593C)12,3.141593D)123.1415930 参考答案:A【解析】 本题考查printf函数的输出格式控制符,%m.nf表示指定输出的实型数据的宽度为m(包含小数点),并保留n位小数。当输出数据的小数位大于n时,截去右边多余的小数,并对截去的部分的第一位小数做四舍五入处理;当输出数据的小数位小于n时,在小数的最右边补0,输出数据的小数部分宽度为n。若给出的总宽度m小于n加上整数位数和小数点,则自动突破m的限制;反之,数字右对齐,左边补空格。本题中3.141593数值长度为8,小数位数为6,因此左端没有空格,故正确答案为A)。52【2009年3月选择题第23题】有以下程序: #include main() int a1, a2; char c1,c2; scanf(%d%c%d%c,&a1,&c1,&a2,&c2); printf(%d,%c,%d,%c,a1,c1,a2,c2); 若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b。正确的输入格式是(以下代表空格,代表回车)_。A)12a34b B)12a34bC)12,a,34,b D)12a34b 参考答案:A【解析】 当输入整数或实数等数值型数据时,输入的数据之间必须用空格、回车、制表符等间隔符号隔开,间隔符个数不限。但整数和字符之间不用空格隔开,因为空格会被当作一个字符读入。因此,本题答案为A)。53【2009年3月填空题第7题】若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(_【7】_,x/y); 补充完整,使其输出的计算结果形式为:x/y=11。 参考答案:x/y=%d【解析】printf语句中,除了格式转换说明外,字符串中的其他字符(包括空格)将按原样输出54【2009年3月填空题第8题】有以下程序: #include main() char c1,c2 ; scanf(%c,&c1); while(c190) scanf(%c,&c1); c2=c1+32; printf(%c,%cn,c1,c2); 程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)_【8】_。 参考答案:不能【解析】c1,c2被定义为字符类型,当输入65时是以字符形式读入,只能读到字符6,6的ASCII码值是54,满足while(c190),所以执行scanf(%c,&c1),即不能输出结果。第四章 选择结构4.1 关系运算符和关系表达式55【2011年9月选择题第19题】下列条件语句中,输出结果与其他语句不同的是_。A)if(a) printf(%dn,x); else printf(%dn,y);B)if(a=0) printf(%dn,y); else printf(%dn,x);C)if(a!=0) printf(%dn,x); else printf(%dn,y);D)if(a=0) printf(%dn,x); else printf(%dn,y); 参考答案:D【解析】考查if语句中的判断,可以由A)、B)、C)三个选项看出,都是表示,只有当a不等于0时输出x,否则输出y,D)选项正好相反,所以选择D)。56【2010年9月选择题第17题】若变量已正确定义,在if(W)printf(%dn,k);中,以下不可替代W的是A)ab+c B)ch=getchar() C) a=b+c D)a+ 参考答案:A【解析】在C语言中,表示不等于不能用,而只能使用!=。其他选项均满足题目的要求。4.2 逻辑运算符和逻辑表达式57【2011年9月选择题第17题】若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1k2)&(k2=k2k1)后,k1和k2的值分别为_。A)0和1 B)0和20 C)10和1 D)10和20 参考答案:B【解析】考查运算符的相关知识,逻辑与运算符的规则是如果第一个参数的值为0,那么就不会执行第二个参数的内容,在本题中,程序执行到第一个括号时,k1的值变为0,且括号内的值为0 ,所以不会执行第二个括号中的语句,即k2仍然保持原值,所以答案为0,20。58【2010年3月选择题第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; 参考答案:C【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)。59【2010年3月选择题第17题】若a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是A)1 B)0C)2 D)不知道a的值,不能确定 参考答案:A【解析】当A=1时,(A=1)|(A!=1)为真;当A!=1时,(A=1)|(A!=1)也为真,故正确答案为A。60【2010年3月填空题第6题】在C语言中,当表达式值为0时表示逻辑值假,当表达式值为【8】时表示逻辑值真。 参考答案:非0【解析】本题一定要明确一个概念,即:所有非0的数(并不只是1),在c语言中都表示逻辑值为真。61【2009年9月选择题第21题】有以下程序:#include main()intn=2,k=0; while(k+&n+2); printf(%d%dn,k,n);程序运行后的输出结果是_。A)02 B)13 C)57 D)12 参考答案:D【解析】 本题考查逻辑运算符的短路现象,由于k的值为0,表达式首先去求k+的值,因为表达式k+的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n+2,不再对它进行求值,即k的值加1,n的值不变。62【2009年9月填空题第8题】以下程序运行后的输出结果是 _【8】_。#include main()intx=20; printf(%d,0x20); printf(%dn,0x&x0|x0&x20)的值,该值为假,即为0。63【2009年3月填空题第10题】下列程序运行时,若输入1abcedf2df 输出结果为_【10】_。 #include main() char a=0,ch; while(ch=getchar()!=n) if(a%2!=0&(ch=a&ch=z) ch=ch-a+A; a+;putchar(ch); printf(n); 参考答案:1AbCeDf2dF【解析】本题考查逻辑运算和ASCII码。While循环的功能是对输入的第偶数个且为小写字母的字符进行处理,将小写字母转化为大写,因此答案为1AbCeDf2dF。4.3 if语句和if选择结构64【2011年9月选择题第18题】有以下程序 #include main() int a=1,b=0; if(-a) b+; else if(a=0)b+=2; else b+=3; printf(%dn,b); 程序运行后的输出结果是_。 A)0 B)1 C)2 D)3 参考答案:C【解析】本题考查运算符和选择语句,执行到if语句时,-a为0,所以不会执行后面的语句,但是会执行else if 后面的语句,所以执行后,b=2,选项C)正确。65【2011年3月选择题第17题】if语句的基本形式是:if(表达式)语句,以下关于表达式值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值 参考答案:D【解析】if语句中的表达式可以是逻辑值也可以是任意合法的数值,表达式的运算结果为非0(真)或者0(假)。66【2011年3月选择题第27题】有以下程序#includemain() int x=1,y=0;if(!x)y+;else if(x=0)if(x)y+=2;else y+=3;printf(%dn,y);程序运行后的输出结果是A)3B)2C)1D)0 参考答案:D【解析】根据在ifelse语句中,else总是和最近的if配对的原则,本题中层次关系是:if (!x)与else if(x=0)是一组,在最外层。而if(x)与else是一组,位于else if(x=0)条件的内层。据此所有条件均不成立,所以y未进行任何操作,仍为0。67【2011年3月填空题第7题】有以下程序#includemain() int x;scanf(%d,&x);if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%dn,x+5);若程序运行时从键盘输入12,则输出结果为 【7】 。 参考答案:1217【解析】本题中输入12时,第一条if的条件x15不满足因此不执行,第二条if的条件x10满足因此输出12,第三条if的条件x5满足因此输出17。68【2011年3月填空题第10题】以下程序运行后的输出结果是 【10】 。#includemain() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf(%d%dn,x,y); 参考答案:20 0【解析】本题中if选择的条件x=y不满足,因此直接执行后面的x=y和y=t,则x的值为20,y的值为0。69【2010年9月选择题第18题】有以下程序#includemain() int a=1,b=0; if(!a)b+; else if(a=0) if(a) b+=2; else b+=3; printf(%dn,b);程序运行后的输出结果是A)0 B)1 C)2 D)3 参考答案:A【解析】根据在ifelse语句中,else总是和最近的if配对的原则,本题中层次关系是:if(!a)与else if(a=0)是一组,在最外层。而if(a)与else是一组,位于else if(a=0)条件的内层。据此所有条件均不成立,所以b未进行任何操作仍为初始值0。70【2010年3月选择题第19题】有如下嵌套的if语句if(ab) if(ac)k=a; else k=c;else if(bc)k=b; else k=c;以下选项中与上述if语句等价的语句是A)k=(ab)?a:b;k=(bc)?b:c;B)k=(ab)?(bc)?b:c);C)k=(ab)?(ac)?a:c):(bc)?b:c);D)k=(ab)?a:b;k=(ac)?a:c; 参考答案:C【解析】嵌套的if语句功能是将k赋值为a、b、c中的最小值,选项A中没有比较a、c的大小,选项B中语句(bc)?b:c)错误,选项D中没有比较b、c大小。71【2010年3月填空题第7题】有以下程序#includemain() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3)d=1; else d=2; else if(c!=3)d=3; else d=4; else d=5; printf(%dn,d);程序运行后的输出结果是【7】。 参考答案:4【解析】a=1为真,b!=2为假,c!=3为假,所以d=4。72【2009年9月选择题第17题】设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其他三个不同的是_。A)if(ab)c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论