




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一. 表达式与运算符3题号题目答案解析1若x是int型变量,且有下面的程序片段for(x=3;x6;x+) printf(x%2)?(*%d):(#%dn),x);上面程序片段的输出结果是_。 *3 #3 #3 *3#4 #4 *4 *4#5 *5 *5 #5A、B、C、D、本题的考查点是条件运算符。 这种条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序为:先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。 故本题答案为D。1执行下面程序中的输出语句后, main() int a; printf(%dn,(a=3*5,a*4),a+5); a的值是_。A、15 B、20 C、10 D、60本题的考查点是对逗号运算符的理解。 逗号运算符的求解过程是从左至右,依次求解各个表达式的值,所以在该题中,先使a的值等于15,再进行a*4,此时整个表达式的值为60,但a的值并未改变,仍为15。 故本题答案为A。1请读程序: #include func(int a, int b) int c; c=a+b; return c; main( ) int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(%dn, r); 上面程序的输出结果是_。A、11B、20C、21D、31本题的考查点是自增、自减运算。 函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。 故本题答案为C。3以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是_。A、if(ab)&(bc)k=1; else k=0;B、if(ab)|(bc)k=1; else k=0;C、if(a=b) k=0; else if(bb) k=1; else if(bc) k=1; else k=0;条件表达式的一般形式为:表达式1?表达式2:表达式3 1、条件运算符的执行顺序为:先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。 2、条件运算符优先于赋值运算符。 3、条件运算符的结合方向为“自右至左”。 综上所述,本题是先比较a,b,如果ab成立则执行(bc?1:0),如果bc成立则结果为1,其它情况则为0。也就是说只有ab与bc同时成立时k值才能为1。 故本题答案为A。3若以下选项中的变量已正确定义,则正确的赋值语句是_。A、x1=26.8%3;B、1+2=x2;C、x3=0x12;D、x4=1+2=3;正确的赋值语句中的左值不能为常量或表达式,右值不能为变量或表达式。 选项A中右值为表达式,明显是错误的; 选项B中,左值为表达式,明显是不对的。 选项D中,表达式x4=1+2=3,是先执行赋值表达式1+2=3,这本身就是错误的,1+2不是变量,不能赋值。 故本题答案为C。3设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是_。A、(a+b)*h/2B、(1/2)*(a+b)*hC、(a+b)*h*1/2D、h/2*(a+b)两个整数相除结果为整数,如5/3的结果为1,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是double型,因为所有实数都按double型进行运算。根据运算符优先级,先计算括号内的,故选项B中(1/2)=0,整个表达式的值为0。 故本题答案为B。3有以下程序:main() int x=0,y=5,z=3; while(z-0&+x0&+x5成立,执行y=y-1;此时,y=5-1=4,z=z-1=2,x=x+1=1。执行后条件仍然成立,继续执行y=y-1,此时y=y-1=3,z=1,x=2,以此类推,直至条件不成立。当z为0时条件不成立,执行后z为-1。 故本题答案为B。5有以下程序main() int a,b,d=25; a=d/10%9; b=a&(-1); printf(%d,%dn,a,b);程序运行后的输出结果是_。A.6,1B.2,1C.6,0D.2,0本题考查的是算术运算符。 如果算术运算符/中参与运算的变量都是整型变量,则/表示整除运算,%表示求余。本题中a=d/10%9;的值为25/10%9=2;b=a&(-1);为2&(-1)=1(注意:-1表示真,只有0才表示假),所以a,b的值分别为2,1。 故本题答案为B。5若整型变量a、b、c、d中的值依次为:1、4、3、2则条件表达式ab?a:cd?c:d的值是_。A、1B、2C、3D、4 本题考查的是条件表达式。 条件表达式的一般形式为:表达式1?表达式2:表达式3 条件运算符的执行顺序为:先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。本题先求的是ab的值,根据a=1,b=4,故ab的值为真,所以整个表达式ab?a:cd?c:d的值为a的值1。故本题的答案为A。5以下程序运行后的输出结果是 _。main() int a=3,b=4,c=5,t=99; if(ba & ac) t=a;a=c;c=t; if(ac & bc) t=b;b=a;a=t; printf(%d %d %dn,a,b,c);4 5 995以下程序运行后的输出结果是_。main() int a,b,c; a=10; b=20; c=(a%b1); printf(%d %d %dn,a,b,c);10 20 022下列关于单目运算符+、-的叙述中正确的是_。A、它们的运算对象可以是任何变量和常量B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量D、它们的运算对象可以是char型变量、int型变量和float型变量本题的考查点是自增、自减运算符。 自增、自减运算符的作用是使变量的值增1或减1,只能用于变量,包括char型变量、int型变量和float型变量,而不能用于常量或表达式。 故本题答案为D。22有以下程序main() int a=5,b=4,c=3,d=2; if(abc) printf(%dn,d); else if(c-1=d)=1) printf(%dn,d+1); else printf(%dn,d+2);执行后输出的结果是_。A、2B、3C、4D、编译时有错,无结果本题的考查点是关系表达式和逻辑表达式。 关系表达式用来进行两个数据的比较,比较的结果为逻辑真或逻辑假。C语言不提供逻辑型数据,而是用整数0表示逻辑假,即比较不成立;用整数1表示逻辑真,即比较成立。 和关系表达式一样,逻辑表达式的值也是用整数1表示逻辑真,用整数0表示逻辑假。 本题中abc即相当于(ab)c,因为ab成立,所以其值为1,然后比较1与c的大小,1c不成立,所以不执行printf语句,然后判断(c-1=d)=1成立,此时执行printf语句,打印d+1=3。 故本题答案为B。22有以下程序main() int i=10,j=1; printf(%d,%dn,i-,+j);执行后输出的结果是_。A、9,2B、10,2C、9,1D、10,1 本题的考查点是自增、自减运算。 作用是使变量的值增1或减1,如: +i,-i (在使用i之前,先使i的值加(减)1) i+,i- (在使用i之后,使i的值加(减)1) 故本题答案为B。22若有语句int i=-19,j=i%4;printf(%dn,j);则输出的结果是_。-3本题的考查点是求模运算。 算术运算符中,%只能对整型运算量施加运算。在计算两个整数的余数时,余数的符号与被除数相同。例如,3%(-2)=1,-3%2=-1,3%2=1,-3%(-2)=-1。 故本题答案为:-3。4有以下程序main() char a=a,b; printf(%c,+a); printf(%cn,b=a+);程序运行后的输出结果是_。A、b,bB、b,cC、a,bD、a,c 本题考查的是+运算符。 +在变量前和变量后的唯一区别就在于在执行“+变量”所在的语句时,是先将变量加了再执行它所在语句还是先执行它所在的语句再使变量加1,当+在变量后时,也就是“变量+”,那就是先将变量值代入表达式运算后再使变量加1;而“+变量”是先使变量加1,再把加1后的结果放入表达式进行运算。这两种情况,在执行完变量所在的语句后,它们在内存中的值都是加过1之后的值了。所以本题中printf(%c,+a)先将a加,再执行此条语句,输出b,而printf(%cn,b=a+)是先输出刚才a的值(刚才的a+表示a=a+1,所以是b),然后再加。 所以答案为A。427. 有以下程序main() unsigned int a; int b=-1; a=b; printf(%u,a);程序运行后的输出结果是_。A、-1B、65535C、32767D、-32768 本题考的是不同类型数据间的混合运算。 当运算对象为不同类型时,数据的转换方向为intunsignedlongdouble,本题程序中的变量b为int型,先要转换为unsigned型,int型变量的数值范围为-3276832767,最高位为符号位,而unsigned所表示的数的范围为0-65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以整型的“-1”在内存中的表示为 16个1,最高位的“1”表示符号负,将它转换为unsigned类型,即将原符号位表示符号的“1”看成数值,所以就得到16个数值位1,即65535。 故本题答案为B。4若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是_。A、abs(x-y)-10&x-y10C、!(x-y)10D、(x-y)*(x-y)100 本题考查的是表达式。 选项A中,abs()本身就是求绝对值的函数,所以是正确的;选项B是把|x-y|10表示成了数学表达式中的-10(x-y)10,然后再用c语言规则表示出来的;选项D相当于把|x-y|10两边同时平方,此处表达也是正确的;而选项C中!(x-y)=-10,!(y-x)10相当于(x-y)=-10。故选项C相当于(x-y)=-10,所以错误。 故本题答案为C。7以下叙述中错误的是_。C程序中的#include和#define行均不是C语句除逗号运算符外,赋值运算符的优先级最低C程序中,j+;是赋值语句C程序中,+、-、*、%号是算术运算符,可用于整形和实型的运算 本题考查的是C语言运算符。 %是求余运算符,其两侧的数值只能为整型,所以它不能用于实型的运算。 故本题答案为D。10若变量均已正确定义并赋值,以下合法的C语言赋值语句是_。A、x=y=5;B、x=n%2.5;C、x+n=i;D、x=5=4+1; 本题的考查点是C语言赋值语句。 赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;由于在赋值符=右边的表达式也可以又是一个赋值表达式,因此,形式变量=(变量=表达式);是成立的,从而形成嵌套的情形,故选项A是正确的;选项D看上去是嵌套形式,而实际上,并非是一个正确的赋值表达式,因为赋值表达式=的左边只能是变量,不能为常量或表达式,所以4+1的值不能赋值给常量5,所以选项D错误,选项C也是错误的;由于求余运算符%的两侧必须为整型数据,所以选项B错误。 故本题答案为A。10设有条件表达式:(EXP)?i+:j-,则以下表达式中与(EXP)完全等价的是_。A、(EXP=0)B、(EXP!=0)C、(EXP=1)D、(EXP!=1) 本题的考查点是C语言条件运算。 条件运算符有三个操作数。它的形式是:(EXP)?exp1:exp2。如果EXP的值为非零,那么整个表达式的值就是表达式exp1的值,如果EXP的值为零,那么整个表达式的值就是exp2的值。选项B的功能是判断EXP的值的是否不为0,如果不为0,则(EXP!=0)的值为真;否则,(EXP!=0)的值为假,与题面的条件表达式意思一致。 故本题答案为B。10以下程序的功能是:输出a、b、c三个变量中的最小值,请填空。#include main() int a,b,c,t1,t2; scanf(%d%d%d,&a,&b,&c); t1=ab?_; t2=ct1?_; printf(%dn,t2);标准答案为:a:b 与 c:t1考生答案为: 本题的考查点是条件运算。 通过题意及输出语句可知,t2用来存放a,b,c三个变量中的最小值。程序首先通过条件运算符比较变量a和b,使得其中小的那个值赋值给变量t1;然后再通过变量c与t1进行比较,将小的值赋给变量t2,从而求得a,b,c三个变量中最小的值。条件运算符的一般形式为: 表达式1?表达式2:表达式3 条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。由于t1存放是a,b中较小的数,所以当a=2c=2&c=2&c=2&c=6,此表达式的值也为真。故本题答案为B。11设变量已正确定义并赋值,以下正确的表达式是_。A x=y*5=x+zB int(15.8%5)C x=y+z+5 ,+yD x=25%5.0 本题的考查点是数据类型、运算符与表达式。 由赋值运算符将一个变量和一个表达式连起来的式子称为赋值表达式,由于选项A相当于x=y*5和y*5=x+z两个赋值表达式,且y*5=x+z由于赋值运算符左边不是变量,而是表达式,所以选项A不正确;由于求余运算符%两侧均要求为整型数据,所以选项B、D不正确。选项C是一个正确的逗号表达式。 故本题答案为C。11若有定义:int k;,以下程序段的输出结果是_。for(k=2;k6;k+,k+) printf(#%d,k);本题的考查点是表达式类型和求值规则。 逗号表达式的一般形式为:表达式1,表达式2,其求解过程为:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。当k=2时,满足条件表达式k6,输出#2;然后执行逗号表达式k+,k+,先算第一个k+,使得k的值为3,再算第二个k+,即在3的基础上加1,则k的值为4,判断条件表达式k=A&ch=Z)?(ch+32):ch上面表达式的值是_。A、A B、a C、Z D、z本题的考查点是条件运算符。 条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序:先求解表达式1,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。 故本题答案为B。12若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_。A、pb=&x;B、pb=x;C、*pb=&x;D、*pb=*x 本题的考查点是赋值表达式。 选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确的赋值表达式。 选项B是将x的值当作地址赋给指针pb,故不正确; 选项C是将x的地址赋给指针pb指向的内存单元,不正确; 选项D是不正确的语句; 本题答案为A。12设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_。A、a&b B、a=b C、a|+c&b-c D、!(ab)&!c|1) 本题的考查点是几种运算符的使用。 选项A:a&b是字符a与b的相与,故不为0; 选项B:a=b,由题中变量赋值可知,结果为1。 选项C:a|+c&b-c,此表达式先做算术运算b-c,结果为-1,而+c属于单目运算符,由于c初值为5,经过单目运算符运算后,还是5,下面再进行逻辑与的运算,即-1&5结果为1(因为C语言中除0代表假外,其它任一个数都代表真),最后a|1,结果为1。 选项D:!(ab)&!c|1),此表达式先运算最外面括号内的表达式(ab)&!c|1,然后再进行非运算,由于(ab)&!c|1中先算小括号内的ab结果为1,再按逻辑运算符的运算顺序:!,&,|,进行运算后得(ab)&!c|1的值为1,所以最后再进行非运算知D选项的运算结果为0。 本题答案为D。12设int a=12,则执行完语句a+=a-=a*a后,a的值是_。A、552 B、264 C、144 D、-264 本题的考查点是赋值表达式的求解。 第一步:a*a=144 ;(此时a=12) 第二步:a-=144相当于a=a-144,a=a-144=-132; (此时a=-132) 第三步:a+=a相当于a=a+a,a=a+a=-264; 所以该表达式最后的值应当为-264。 故本题答案为D。12请选出合法的C语言赋值语句_。A、a=b=58B、i+;C、a=58,b=58;D、k=int(a+b); 本题的考查点是赋值语句。 选项A没有用分号表示语句结束,不合法; 选项B为i=i+1;,这并不是赋值语句; 选项D,函数名和C语言的关键字重名,不合法。 故本题答案为C。12若执行下面的程序时从键盘上输入3和4, main() int a,b,s; scanf(%d %d,&a,&b); s=a; if(ab)s=b; s=s*s; printf(%dn,s); 则输出是_。A、14 B、16 C、18 D、20 本题的考查点是给变量赋值。 用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。 故本题答案为B。12下面程序的输出是_。main( ) int x=3 ,y=6,a=0; while(x+!=(y-=1) ) a+=1; if (yb) a=b, b=c; c=a;printf (a=%d b=%d c=%dn,a,b,c);程序的输出结果是_。A:a=10 b=50 c=10B:a=10 b=50 c=30C:a=10 b=30 c=10D:a=50 b=30 c=50 本题的考查点是条件语句。 本题if条件表达式ab的值为0,所以不执行其后的if语句a=b, b=c;,直接执行下一条语句c=a;,故c变量的值为10,所以输出结果为a=10 b=50 c=10。 故本题答案为A。13以下不能正确表示代数式的C语言表达式是_。A:2*a*b/c/dB:a*b/c/d*2C:a/c/d*b*2D:2*a*b/c*d 本题考查的是算术运算符的优先级。 算术运算符包括:+(加法运算符,或正值运算符)、-(减法运算符,或负值运算符)、*(乘法运算符)、/(除法运算符)、%(模运算符,或称求余运算符),其中*、/两运算符的优先级相同,所以选项D错误,它表示的是2abd/c,而不是2ab/(cd)。 故本题答案为D。13执行以下程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租车劳动合同范本2篇
- 瓶式氧气吸入课件
- 安全施工培训内容记录课件
- 农业碳汇项目融资策略与风险管理研究报告
- 农业现代化背景下2025年智能农业种植风险防控与绿色生产方案报告
- 球团厂安全规程培训
- 安全教训培训工作通报课件
- 猫咪商店课件
- 安全教育演练培训心得课件
- 安全教育日课件
- 手卫生知识答题及答案
- 洁净室区甲醛熏蒸消毒标准操作规程
- 4.1 整式(第1课时 单项式) 课件 七年级数学上册 (人教版2024)
- 中国急性缺血性卒中诊治指南(2023)解读
- 常熟理工学院图书馆考试完整题库
- 招聘诚信承诺书
- 装配式混凝土检查井施工及验收规程
- 2024小红书无货源精细化铺货实战课程
- 任正非的创业故事
- 学生实习家长知情同意书(完美版)
- 涉警网络负面舆情应对与处置策略
评论
0/150
提交评论