《二级C语言笔试考点相关真题(答案解析版).pdf》由会员分享,可在线阅读,更多相关《二级C语言笔试考点相关真题(答案解析版).pdf(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章 C语言概述1.1 C语言基础知识I .【2 0 1 1 年9 月选择题第1 1 题】以 下 叙 述 中 错 误 的 是。A)C 语言编写的函数源程序,其文件名后缀可以是.CB)C 语言编写的函数都可以作为一个独立的源程序文件C)C 语言编写的每个函数都可以进行独立的编译并执行D)一个C 语言程序只能有一个主函数参考答案:C【解析】C 语言编写的每个函数可以被独立编译,但是除主函数外不能独立执行。2 .【2 0 1 1 年3 月选择题第1 1 题】计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A)C 语言程序仅可以编译执行B)C 语言程序仅可以解释执行C)C
2、 语言程序既可以编译执行又可以解释执行D)以上说法都不对参考答案:A【解析】解释程序是将源程序(如B AS I C)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。编译程序是把高级语言(如F O R T R A N、C O B O L、Pa s c a l.C 等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。3.【2 0 1 1 年3 月选择题第1 2 题】以下叙述中错误的是A)C 语言的可执行程序是由一系列机器指令构成的B)用C 语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在
3、没有安装C 语言集成开发环境的机器上不能运行C 源程序生成的.e xe 文件参考答案:D【解析】C 语言的可执行程序是由一系列机器指令组成的,用C 语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离C 语言集成开发环境。故答案为D)。1.2 常量、变量和数据类型4.【2 0 1 1 年9 月选择题第1 3 题】以F选项中关于C 语 言 常 量 的 叙 述 错 误 的 是。A)所谓常量,是指在程序运行过程中,其值不能被改变的量B)常量分为整型常量、实型常量、字符常量和字符串常量C)常量可分为数值型常量和非数值型常量D)经常被使用的变量可以定义成常量参考答案:D【解析
4、】常量是其值不可变化的量。常量分为数字常量和字符常量。在C 语言中,常量多是通过符号常量来表示的。数字常量又包括整形常量和浮点型常量,浮点型常量又称实数。在程序中不希望被改变的变量才定义为常量,而不是经常使用的变量。5 .【2 0 1 1 年9 月选择题第1 4题】若有定义语句:i n t a=1 0;d o u b l e b=3.1 4;,则表达式 A,+a+b 值的类型是。A)char B)int C)double D)float参考答案:c【解析】本题考查数据类型的自动转换,C语言语法规定,当不同的变量相加时按最长的变量对齐,即转换优先级为:char int floatdouble。6
5、.【2011年9月选择题第21题】以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)oA)printf(%cn,n-32);B)printf(%dn,A);C)printf(%cn,65);D)printf(%cn,B-l);参考答案:B【解析】A)、C)、D)三个选项的输出格式都是c,只有B)的输出格式是d,只会输出数字6 5,所以应选择B)。7.【2011年9月填空题第12题】有以下程序#include main()intc3=0,k,i;while(k=getchar()!=n)ck-A+;for(i=0;i3;i+)printf(%d,ci);
6、printf(n);)若程序运行时从键盘输入ABCACC 回车,则 输 出 结 果 为【12】。参考答案:213【解析】当输入A时,a+;当输入B时,al+;当输入C时,a2+;直到遇到回车循环停止,题中共输入2个A,1个B,3个C,所以输出结果为213。8.【2011年3月选择题第13题】以下选项中不能用作C程序合法常量的是A)1,234 B)123 0123 D)“x7G参考答案:A【解析】常量是在程序运行过程中,其值不能被改变的量。常量类型包括:整型常量、实例常量、字符常量、字符串常量和符号常量。B)选项为字符常量,表示八进制数123代表的ASCH字符;C)选项为整型常量;D)选项为字符
7、串常量。9.【2011年3月选择题第14题】以下选项中可用作C程序合法实数的是A).leO B)3.OeO.2 C)E9 D)9.12E参考答案:A【解析】浮点型常量有十进制小数形式和指数形式。指数形式要求字母e(或者E)之前必须有数字,且e后面的指数必须为整数。B)、C)、D)都是不合法的指数形式,故答案为A)。10.【2011年3月填空题第8题】有以下程序(说明:字符0的ASCII码值为48)#includemain()char cl,c2;scanf(%d”,&cl);c2=cl+9;printf(%c%cn”,cl,c2);)若程序运行时从键盘输入48 回车,则 输 出 结 果 为【8
8、】。参考答案:09【解析】本题中通过ASCH码对字符变量赋值,由于字符0的ASCII码是4 8,因此字符变量cl为0,c2的ASCII码比c l大9,因此c2为9。11.【2010年9月选择题第13题】以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行O 所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数参考答案:B【解析】C程序在运行过程中所有计算都以二进制方式进行,所以A)正确B)错误。所有C程序先编译再链接,全都无误后才能运行。C程序中整型变量用于存放整数,实型变量用于存放浮点数。
9、所以,本题答案为B)。12.【2010年9月选择题第15题】以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0 C)字符斜杠:D)字符串:007”参考答案:D【解析】A)选项中1,200不能表示整数1200。B)选项中应表示为L5E2。在C语言中,反斜杠是转义符,其后必须跟有其他字符,所以选项C)也是错误的。D)选项正确。13.【2010年3月选择题第13题】以下C语言用户标识符中,不合法的是A)_l B)AaBc C)a_b D)ab参考答案:D【解析】标识符由字母、下划线、数字三个方面组成,开头必须是字母或下划线。14.【2010年3月选择题第16题】以下关于C语言
10、数据类型使用的叙述中错误的是A)若要准确无误差地表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如 人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理 真 和 假 两种逻辑值,应使用逻辑类型参考答案:D【解析】C语言中没有逻辑类型,若只处理”真 或 假 两种逻辑值,可以使用整型数”1或“0表示,故选D。15.【2009年9月选择题第12题】以下选项中,能 用 作 用 户 标 识 符 的 是。A)void B)88C)_0_ D)unsigned参考答案:C【解析】C语言的标识符命名规则为:只能由字母、数值和下划线3种字符组成;第一个字符必须
11、是字母或下划线;不能与C语言中的关键字或保留字相同。16.【2009年9月选择题第22题】有以下定义语句,编 译 时 会 出 现 编 译 错 误 的 是。A)char a-a;B)char a-n;C)char a-a a;D)char a=x 2 d;参考答案:C【解析】aa是字符串,不用加上单引号。17.【2009年3月选择题第11题】以 下 选 项 中 合 法 的 标 识 符 是。A)1 1B)l-1C)_llD)l_ _参考答案:C【解析】标识符命名规则:标识符必须由字母(a z或A Z)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(0 9)组成;大小写字母表示不同意义
12、,如cout和Cout代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义些下划线开头的标识符。因此,本题正确答案为。18.【2009年3月选择题第12题】若函数中有定义语句:in tk;,则。A)系统将自动给k赋初值0B)这时k中的值无定义C)系统将自动给k赋初值-1D)这时k中无任何值参考答案:B【解析】用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中存放任何值,此时变量中的值是无确定的,称变量值 无意义。因此,本题正确答案为B)。19.【2009年3月选择题第13题】以下选项中,能 用 作 数
13、据 常 量 的 是 A)oll58)0118C)1.5el.5D)115L参考答案:D【解析】整型常量和实型常量统称为数值型常量。本题中A)项是数字和字符的组合,不能构成数值型常量。B)项以0开头代表该常量是一个8进制数,但其后面的数字中又出现了“8”,因此不正确。C)项用指数形式表示实型常量,但e后面必须为整数,不正确。D)项中一个常量后面加字母L表示长整型数据。因此,本题答案为D)。第二章运算符与表达式2.1 C 语言运算符简介2 0.【2010年9月选择题第38题】有以下程序#includemain()int s,t,A=10;double B=6;s=sizeof(A);t=sizeo
14、f(B);p rin tf(/z%d,%dn”,s,t);在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6参考答案:C【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC6中整型占4个字节,双精度实型占8个字节,所以选0。2.2 算术运算符和算术表达式2 1.【2 0 1 1 年9 月填空题第7 题】以下程序运行后的输出结果是#i n c l u d e m a i n()i n t a=3 7;a%=9;p r i n t f(u%d n,a);参考答案:1【解析】本题考查的是取余运算。3 7%9 商为4,余数为1,所以输出
15、的值为1。2 2.【2 0 1 1 年3 月选择题第1 8 题】有以下程序#i n c l u d e m a i n ()i n t x=0 1 1;p r i n t f(%d n”,+x):)程序运行后的输出结果是A)1 2 B)l l C)1 0 D)9参考答案:C【解析】x=0 1 1 表示把八进制的1 1 赋值给变量x,因此x 的值为十进制的9,程序运行的结果输出变量x 自加运算后的十进制值,即1 0。2 3.【2 0 1 1 年3 月填空题第6 题】以下程序运行后的输出结果是【下。#i n c l u d e m a i n ()i n t a;a=(i n t)(d o u b
16、 l e)(3/2)+0.5+(i n t)1.9 9*2);p r i n t f(%d n ,a);参考答案:3【解析】本题中 3/2=1,(d o u b l e)(3/2)=l,(i n t)1.9 9*2=1*2=2,因此(i n t)(l+0.5+2)=(i n t)3.5=3。2 4.【2 0 1 0 年3 月选择题第1 2 题】以下关于C 语言的叙述中正确的是A)C 语言中的注释不可以夹在变量名或关键字的中间B)C 语言中的变量可以在使用之前的任何位置进行定义0在C 语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C 语言的数值常量中夹带空格不影响常量值的正确表示参考
17、答案:A【解析】C 语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C 标准规定定义位置在相关程序块的首部,选项B 错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选 项 C错误;C语言数值常量中不允许存在空格,选项D 错误。2 5.【2 0 1 0 年3 月填空题第1 3 题】以下程序的功能是:将值为三位正整数的变量x 中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#in c l u d e m a in ()in t x=256;p r in t f C%d-%d-%d n,13 ,x/10%10,x/100);参
18、考答案:x%10【解析】x=256,x%10=626.【2009年9月选择题第14题】表达式:(in t)(d o u b l e)9/2)-(9)%2的值是。A)0 B)30 4 D)5参考答案:B【解析】(in t)(d o u b l e)9/2)的值为4,(9)%2的值为 1,因此(in t)(d o u b l e)9/2)-(9)%2的值为3。27.【2009年 9 月填空题第6 题】若有定义语句:in t a=5;,则表达式:a+的值是 皿。参考答案:5【解析】a+的含义是在使用a 值以后,使 a 值 加 1,所以a+的值为5。28.【2009年9月填空题第7题】若有语句d o
19、u b l e x=17;in t y;,当执行y=(in t)(x/5)%2;之后y 的值为 7】一。参考答案:1 解析 y=(in t)(x/5)%2=(in t)(3.4)%2=3%2=1。29.【2009年3月填空题第6题】表达式(in t)(d o u b l e)(5/2)+2.5)的表是 6】。参考答案:4【解析】计算5/2=2,其结果先转换为d o u b l e 类型,即2.000000,然后加上2.5为4.5000000,再转换为in t 型,所以结果为4。2.3赋值运算符和赋值表达式30.【2011年9月选择题第15题】若有定义语句:in t x=12,y=8,z;,在其
20、后执行语句z=0.9+x/y;,则z 的值为 OA)1.9 B)1 C)2 D)2.4参考答案:B【解析】x 的值为12,y 的值为8,那么x/y 的值就是1,因为z 的类型是in t,所以0.9+1变成in t 的值就是1,所以选择B)。31.【2011年3月选择题第15题】若有定义语句:in t a=3,b=2,c=l;,以下选项中错误的赋值表达式是A)a=(b=4)=3;B)a=b=c+l;C)a=(b=4)+c;D)a=l+(b=c=4);参考答案:A【解析】在 A)选项中,赋值语句b=4先把4 赋值给整型变量b,之后执行(b=4)=3是把常量3 赋值给常量4,但是由于C语言规定赋值运
21、算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。32.【2010年9月选择题第14题】有以下定义:in t a;l o n g b;d o u b l e x,y;则 以 F 选项中正确的表达式是A)a%(in t)(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题】若有定义语句:int x
22、=10;,则表达式x-=x+x的值为。A)-20 B)-10C)0 D)10参考答案:B【解析】x-=x+x可化为:x=x-(x+x),由于x初始值为1 0,所以计算后,x=10-20=-1 0,因此选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题】设有定义:in tx=2;,以下表达式中,值不为6的是。A)x*=x+1B)x+,2*x
23、C)x*=(l+x)D)2*x,x+=2参考答案:D【解析】本题考察逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为自左至右。A)项 和C)项的结果是一样的,可展开为:x=x*(x+l)=2+,因为+运算符有自加功能,逗号之前执行后x的值为3,逗号后的值就是整个表达式的值,即6;D)项逗号之前并未给x赋值,所以表达式的值就是x+=2的值,即4。因此,本题答案为D)。2.4位运算3 6.120H年9月选择题第38题】有以下程序#include main()int a=2,b;b=a2;printf(%dn,b);)程 序 运 行 后 的
24、 输 出 结 果 是。A)2 B)4 C)6 D)8参考答案:D【解析】考查移位操作,b的值是由a左移两位,所以b的值为2 X 2X2=8。3 7.【2011年3月选择题第39题】有以下程序#includemain()unsigned char a=8,c;c=a3;printf(%dn,c);)程序运行后的输出结果是A)32 B)16 C)1 D)0参考答案:C【解析】本题中将8赋值给字符变量a,则a 的二进制为“O O O O IO O O”,a 3的位运算是把a 向右移动三位,结果为“00000001”,输出其十进制的值1。38.【2010年9月选择题第40题】有以下程序#in c l
25、u d e m a in ()s h o r t c=124;c-c;p r in t f (%d n”,c);)若要使程序的运行结果为248,应在下划线处填入的是A)2 B)|248 O&0248 D)1参考答案:D【解析】短整型在存储时占用16位,按照移位运算如果右移两位就等于原数除以4,结果为3 1,如果左移一位相当于原数乘以2结果为248,所以选择D)。39.【2010年3月选择题第39题】有以下程序#in c l u d e m a in ()in t a=2,b=2,c=2;p r in t f (/%d n/,,a/b&c);程序运行后的输出结果是A)0 B)1 C)2 D)3参
26、考答案:A【解析】对于a/b&c,先求a/b,得到1,然后求l&c(即按位与操作),显然得0。40.【2009年9月选择题第39题】若有以下程序段:i n t r=8;p r i n t f(%dn ,r l);输出结果是 OA)16 B)80 4 D)2参考答案:C【解析】8用二进制表示为1000,右移1位后为0100,即十进制4。41.【2009年3月选择题第39题】有以下程序:#i n cl u de m ai n()i n t a=5,b=l,t;t=(a 2)l b;p r i n t f(%dn ,t);程 序 运 行 后 的 输 出 结 果 是。A)21 B)l l0 6 D)1
27、参考答案:A【解析】按位或运算符1是双目运算符,其功能是参与运算的两数各对应的二进位相或。左移 运 算 符 是 双 目 运 算 符,其功能把”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。将5变换为二进制数为101,左移2位后为10100,1转换为二进制数为00001,10100与00001进行或运算后为10101,再将其转换为十进制数为21。因此,本题答案为A)。第三章基本语句3.1 C 语句概述4 2.【2009年9月选择题第16题】有以下程序:#include main()int a=l,b=0;printf(%d,b=a+b);printf(%
28、dn,a=2*b);)程序运行后的输出结果是 oA)0,0 B)l,00 3,2 D)l,2参考答案:D【解析】执行第一个printf语句时、b=a+b=l,所以输出1,执行第二个printf语句时,a=2*b=2,所以输出结果为2。3.2 赋值语句3.3 输入输出概念及其实现3.4 单个字符的输入与输出3.5 数据格式的输入与输出43.【2011年9月选择题第16题】若有定义:inta,b;,通过语句scanf(d;%d,&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是 oA)3 5 B)3,5 C)3;5 D)35参考答案:C【解析】在C语言中scanf函数中输入数据时要严格
29、按照所规定的样式输入。44.【2011年9月填空题第6题】若程序中已给整型变量a和b赋值10和2 0,请写出按以卜.格式输出a、b值 的 语 句【6】。*a=10,b=20*参考答案:p rin tf(*a=%d,b=%d*,a,b);【解析】本题考查的是printf函数的用法,prinrf函数实际上是将所有参数按字符输出。4 5【2010年9月填空题第6题】以下程序运行后的输出结果是 6】。#i n cl u de m ai n ()i n t a=200,b=010;p r i n t f(%d%dn”,a,b);)参考答案:2008【解析】整型变量a 的值为200,b 的值”010”是用
30、八进制表示的“10”即十进制的 8“,最后输出格式均为刎,即十进制格式,所以输出为“2008”。4 6【2010年9月填空题第7题】有以下程序#i n cl u de m ai n ()i n t x,y;s can f(%2d%l d,&x,&y);printfx+y);程序运行时输入:1234567,程 序 的 运 行 结 果 是【7】。参考答案:15【解析】可以指定输入数据所占列宽,系统自动按所指定的格式截取所需数据。/2d即将输入数据的2 个列宽的数据赋给变量x ,因为输入的为“1234567,所以前两个列宽的数据为12,即 x的值为12,同理Md 即把输入数据中前两个列宽所在数据后的
31、一个列宽的数据赋给变量y,所以y的值为3,所以x+y 的值为15。4 7【2010年3月选择题第15题】有以下程序#i n cl u de m ai n ()ch ar a,b,c,d;s can f (枇 c,&a,&b);c=g e t ch ar ();d=g e t ch ar ();p r i n t f(%c%c%c%cn”,a,b,c,d);)当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意,回车也是一个字符)1234则输出结果是A)1234 B)12 C)12 D)123 34参考答案:C【解析】程序根据用户输入分别给字符型变量a、b、c、d赋值为T、2、3,因此
32、输出到屏幕得到选项C中的格式。4 8【2010年3月选择题第22题】有以下程序,其中k 的初值为八进制数#i n cl u de m ai n ()i n t k=011;p r i n t f (%dn”,k+);)程序运行后的输出结果是A)12 B)ll C)10 D)9参考答案:D【解析】Oil转换成十进制为9,并且k+表示先使用k的值,再使k的值加1,所以输出值为9。4 9【2009年9月选择题第13题】阅读以下程序:#include main()int case;float printF;printff请输入2个数:”);scanf(n%d%f,&case,&printF);prin
33、tf(%d%An,case,printF);)该程序在编译时产生错误,其 出 错 原 因 是。A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,p rin tf不能输Hlcase的值参考答案:A【解析】标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字case,所以将出现错误。5 0【2009年9月选择题第23题】有以下程序:#include main()char cl,c2
34、;cl=A+8-4;c2=A+8-5;printf(%c,%dn,cl,c2);已知字母A的ASCII码为6 5,程序运行后的输出结果是 oA)E,68 B)D,69OE,D D)输出无定值参考答案:A【解析】cl输出字符的ASCII码比字母A大4,即字母E;c2以十进制数字形式输出,因此可以判断本题答案为A)。5 1【2009年3月选择题第 15题】程 序 段:int x=12;double y=3.141593;printf(%d%8.6f,x,y);的 输 出 结 果 是。A)123.141593B)12 3.141593012,3.1415930)123.1415930参考答案:A【解
35、析】本题考查printf函数的输出格式控制符,m.nf表示指定输出的实型数据的宽度为m(包含小数点),并保留n位小数。当输出数据的小数位大于n时,截去右边多余的小数,并对截去的部分的第一位小数做四舍五入处理;当输出数据的小数位小于n时,在小数的最右边补0,输出数据的小数部分宽度为n。若给出的总宽度m小于n加上整数位数和小数点,则自动突破m的限制;反之,数字右对齐,左边补空格。本题中3.141593数值长度为8,小数位数为6,因此左端没有空格,故正确答案为A)。5 2【2009年3月选择题第23题】有以下程序:#include main()int al,a2;char c 1,c2;scanf(
36、%d%c%d%c,&al,&cl,&a2,&c2);printf(%d,%c,%d,%c,a l,c l,a2,c2);I若想通过键盘输入,使得a l的值为12,a2的值为34,c l的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,bo正确的输入格式是(以下U 代表空格,代表回车)。A)12a34bB)12uau34ub012,a,34,bD)12Ua34Mb参考答案:A【解析】当输入整数或实数等数值型数据时,输入的数据之间必须用空格、回车、制表符等间隔符号隔开,间隔符个数不限。但整数和字符之间不用空格隔开,因为空格会被当作一个字符读入。因此,本题答案为A)。5 3【2009年
37、3月填空题第7题】若变量x、y已定义为血类型且x的值为99,y的值为9,请将输出语句p r in tf(【7】,x/y);补充完整,使其输出的计算结果形式为:x/y=ll参考答案:x/y=%d”【解析】printf语句中,除了格式转换说明外,字符串中的其他字符(包括空格)将按原样输出5 4【2009年3月填空题第8题】有以下程序:#include main()char c l,c2;scanf(%c,&cl);while(cl90)scanf(%c,&cl);c2=cl+32;printf(%c,%cn,cl,c2);程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)1江。参考答
38、案:不能【解析】cl,C2被定义为字符类型,当输入65时是以字符形式读入,只能读到字符6,6的ASCII码值是5 4,满足while(cl90),所以执行scanf(%c,&c l),即不能输出结果。第四章选择结构4.1 关系运算符和关系表达式5 5【2011年9月选择题第19题】下列条件语句中,输出结果与其他语句不同的是 oA)if(a)printf(u%dn,x);else printf(n%dn,y);B)if(a=O)printf(M%dnM,y);else printf(n%dnM,x);C)if(a!=O)printf(n%dn,x);else printf(n%dnH,y);D)
39、if(a=O)printf(%dnM,x);else printf(M%dnH,y);参考答案:D【解析】考查if语句中的判断,可以由A)、B)、C)三个选项看出,都是表示,只有当a不等于0时输出x,否则输出y,D)选项正好相反,所以选择D)。5 6【2010年9月选择题第17题】若变量已正确定义,在if(W)printf(%dn,k);中,以下不可替代W的是A)aOb+c B)ch=getchar 0 C)a=b+c D)a+参考答案:A【解析】在C语言中,表示不等于不能用 ,而只能使用!=。其他选项均满足题目的要求。4.2 逻辑运算符和逻辑表达式5 7【2011年 9 月 选 择 题 第
40、17题】若 有 定 义 语 句:int kl=10,k2=20;,执行表达式(kl=klk2)&(k2=k2kl)后,kl和k2的值分别为。A)0 和 1 B)O 和20 0 1 0 和1 D)10和 20参考答案:B【解析】考查运算符的相关知识,逻辑与运算符的规则是如果第一个参数的值为0,那么就不会执行第二个参数的内容,在本题中,程序执行到第一个括号时,k l 的值变为0,且括号内的值为0,所以不会执行第二个括号中的语句,即 k2仍然保持原值,所以答案为0,20。5 8【2010年3月选择题第14题】若有定义:doublea=22;int i=0,k=18;,则不符合C语言规定的赋值语句是A
41、)a=a+,i+;B)i=(a+k)=(i+k);C)i=a%l1;D)i=!a;参考答案:C【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)。5 9【2010年3月选择题第17题】若a是数值类型,则逻辑表达式(a=l)I I (a!=l)的值是A)1 B)00 2D)不知道a的值,不能确定参考答案:A【解析】当 A=l时,(A=1)|(A!=1)为真;当A!=l时,(A=l)|(A!=l)也为真,故正确答案为A。6 0【2010年3月填空题第6题】在C语言中,当表达式值为0时表示逻辑值 假,当表达式值为【8】时表示逻辑值 真”。参考答案:非0【解析】本题
42、一定要明确一个概念,即:所有非0 的数(并不只是 1 ),在 c 语言中都表示逻辑值为“真。6 1【2009年9月选择题第21题】有 以 F程序:#include main()int n=2,k=0;while(k+&n+2);printf(M%d%dn,k,n);)程序运行后的输出结果是 oA)0 2 B)1 3C)5 7 D)1 2参考答案:D【解析】本题考查逻辑运算符的 短路 现象,由于k 的值为0,表达式首先去求k+的值,因为表达式k+的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n+2,不再对它进行求值,即 k 的值加1,n 的值不变。6 2【2009年9月填空题
43、第8题】以下程序运行后的输出结果是【8】一。#include main()int x=20;printf(n%dM,0 x20);printf(n%dnn,0 x&x0llx0&x20)的值,该值为假,即为0。6 3【2009年3月填空题第10题】下列程序运行时,若输入labcedf2df回车 输出结果为一10 O#includemain()chara=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码。Wh
44、ile循环的功能是对输入的第偶数个且为小写字母的字符进行处理,将小写字母转化为大写,因此答案为!AbCeDf2dFo4.3 if语句和if选择结构6 4【2011年9月选择题第18题】有以下程序#include main()inta=l,b=0;if(-a)b+;else if(a=O)b+=2;else b+=3;printf(%dn,b);程序运行后的输出结果是 oA)0 B)1 C)2 D)3参考答案:C【解析】本题考查运算符和选择语句,执行到if语句时,一a为0,所以不会执行后面的语句,但是会执行else i f 后面的语句,所以执行后,b=2,选项C)正确。6 5【2011年3月选择
45、题第17题】if 语句的基本形式是:i f(表达式)语句,以下关于 表达式”值的叙述中正确的是A)必须是逻辑值 B)必须是整数值C)必须是正数 D)可以是任意合法的数值参考答案:D【解析】if语句中的表达式可以是逻辑值也可以是任意合法的数值,表达式的运算结果为非0(真)或者0(假)。6 6【2011年3月选择题第27题】有以下程序#includemain()int x=l,y=0;if(!x)y+;else if(x=0)i f(x)y+=2;else y+=3;printf(%dn,y);)程序运行后的输出结果是A)3 B)2 C)1 D)0参考答案:D【解析】根据在ifelse语句中,el
46、se总是和最近的if0己对的原则,本题中层次关系是:if(!x)与else if(x=O)是一 一 组,在最外层。而if(x)与else是一-组,位于else if(x=O)条件的内层。据此所有条件均不成立,所以y未进行任何操作,仍为0。6 7【2011年3月填空题第7题】有以下程序#includemain()int x;scanf(%d,&x);i f(x 1 5)p r i n t f x-5);i f(x 1 0)p r i n t f x);if(x5)printf(%dn”,x+5);若程序运行时从键盘输入12 回车,则 输 出 结 果 为【7】。参考答案:1217【解析】本题中输入
47、12时,第一条if的条件x15不满足因此不执行,第二条if的条件x10满足因此输出1 2,第三条if的条件x5满足因此输出17。6 8【2 01 1 年3 月填空题第1 0题】以下程序运行后的输出结果是【1 0】。#i nc l u de m a i n()i nt x=1 0,y=2 0,t=0;i f(x=y)t=x;x=y;y=t;p r i nt f(,%d%d n,x,y);)参考答案:2 0 0【解析】本题中i f选择的条件x=y 不满足,因此直接执行后面的x 二 y 和y 二 t,贝 I j x 的值为2 0,y的值为0。6 9【2 01 0年9 月选择题笫1 8 题】有以下程序
48、#i nc l u de m a i n()i nt a=l,b=0;i f(!a)b+;e l s e i f(a=0)i f(a)b+=2;e l s e b+=3;p r i nt f(%d n”,b);)程序运行后的输出结果是A)0 B)1 C)2 D)3参考答案:A【解析】根据在i fe l se 语句中,e l se 总是和最近的i f 配对的原则,本题中层次关系是:i f (!a)与e l se i f (a=0)是一组,在最外层。而i f (a)与e l se 是一组,位于e l se i f(a=O)条件的内层。据此所有条件均不成立,所以b未进行任何操作仍为初始值0。7 0【
49、2 0 1 0 年3 月选择题第1 9 题】有如下嵌套的i f 语句i f(a b)i f(a c)k=a;e l se k=c;e l sei f(b c)k=b;e l se k=c;以下选项中与上述i f 语句等价的语句是A)k=(a b)?a:b;k=(b c)?b:c;B)k=(a b)?(b c)?b:c);C)k=(a b)?(a c)?a:c):(b c)?b:c);D)k=(a b)?a:b;k=(a c)?a:c;参考答案:C【解析】嵌套的i f 语句功能是将k 赋值为a、b、c中的最小值,选项A 中没有比较a、c的大小,选项B 中语句(b c)?b:c)“错误,选项D 中
50、没有比较b、c大小。7 1【2 0 1 0 年3 月填空题第7 题】有以下程序#i n cl u de m ai n()i n t a=l,b=2,c=3,d=0;i f(a=l)i f(b!=2)i f(c=3)d=l;e l se d=2;e l se i f(c!=3)d=3;e l se d=4;e l se d=5;p r i n tf(%d n,d);)程序运行后的输出结果是 7】。参考答案:4【解析】a=l 为真,b!=2 为假,c!=3 为假,所以d=4。7 2【2 0 0 9 年9 月选择题第1 7 题】设有定义:i n t a=l,b=2,c=3;,以下语句中执行效果与其他