第3章表达式与运算符测试
- 格式:doc
- 大小:49.50 KB
- 文档页数:5
第三章运算符和表达式3.1 运算符和表达式概述使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。
用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。
另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。
根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类:(1) 单目(一元)运算符:只连接一个操作数的运算符。
(2) 双目(二元)运算符:带有两个操作数的运算符。
(3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。
C语言中的表达式可以分为三类:(1) 单个常量或者单个变量是最简单的表达式。
(2) 带有运算符的表达式。
(3) 函数调用。
任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。
所以运算对象、运算符和运算结果是运算的三大要素。
3.2 算术运算符和算术表达式一、基本算术运算符和简单算术表达式1. 基本算术运算符C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。
2. 简单算术表达式当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。
简单算术表达式的基本形式:data1 op data2。
data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。
假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。
3. 基本算术运算符使用说明(1) +、-、*,/既可以连接整型数据,也可以连接实型数据。
当参与这4个运算符的运算对象都是整型数据时,得到整型数据运算结果;否则表示浮点运算。
例如,int a=15,b=2;则a*b等于30,而a/b等于7;a*2.0等于30.0,而a/2.0等于7.5。
设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是(D)。
A.12B.18C.16D.21下列数据中,为字符的是(D)。
A.‘AB’B."A"C.HowD.‘A'以下符号中,合法的用户标识符是(D)。
A. -pB. intC. 3abD. _xt_以下实型常量中,符合C语言语法的是(A)。
A. .5E-3B. 1.2E0.5C. E15D. 3.14.159E若有说明和语句:int a=5,b=6;b*=a+1;则b的值为(D)A. 5B. 6C. 31D. 36设C 语言中,int 类型数据占4个字节,则short 类型数据占(C)。
A.1个字节B.2个字节C.4个字节D.8个字节若x=3.5,a=2,y=2.5,b=3则表达式(float)(a+b)/2+(int)x%(int)y的值是()。
A.1.5B.2.5C.3.5D.2以下选项中不属于C语言的类型的是(D)。
A.signed short intB.unsigned long intC.unsigned intD.long short关于C语言数据类型的叙述,正确的是(C)。
A. 整型不是基本类型B. 数组不是构造类型C. 变量必须先定义后使用D. 不允许使用空类型若a=12,则表达式a-=a的值为(A)。
A. 0B.12C.1D. 24若x=3.5,a=2,y=2.5,b=3则表达式(int)(a+b)/2+(int)x%(int)y的值是(D)。
A. 1.5B. 2.5C. 3D. 3.5若a是数值类型,则逻辑表达式(a==1)&&(a!=1)的值是(C)。
A.1B. 2C. 0D. 不知道a的值,不能确定若char x=97,则变量x对应(A)字符。
A. ‘a’B. ‘A’C. ‘9’D. ‘7’设C语言中,int类型数据占2个字节,则float类型数据占(C)字节。
第三章数据类型、运算符与表达式一单项选择题1.下面四个选项中,均不是c语言关键字的选项是()。
A) define IF Type B) getc char printfC) include scanf case D) while go pow3.下列四个选项中,均是C语言关键字的选项是()。
A) auto enum include B) switch typedef continueC) signed union scanf D) if struct type4.下面四个选项中,均是不合法的用户标识符的选项是()。
A) A P_0 do B) float la0 _AC) b-a goto int D) _123 temp int5.以下有4组用户标识符,其中合法的一组是()。
A) For -sub Case B) 4d DO SizeC) f2_G3 IF abc D) WORD void define7.下面四个选项中,均是合法整型常量的选项是()。
A) 160 -0xffff 011 B) -0xcdf 01a 0xeC) –01986 012 0668 D) -0x48a 2e5 0xe8.下面四个选项中,均是正确的八进制数或十六进制数的选项是()。
A) -10 0x8f -011 B) 0abc -017 0xcC) 010 -0x11 0xf1 D) 0a12 -0x123 -0xa9.设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为()。
A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 10.在C语言中,不正确的int类型的常数是()。
A)32768 B)0 C)037 D)0xAF13.下面四个选项中,均是合法的浮点数的选项是()。
A) +1e+1 5e-9.4 03e2 B) -.60 12e-4 -8e5C) 123e 1.2e-.4 +2e-1 D) -e3 .8e-4 5.e-015.以下选项中合法的字符常量是()。
c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。
常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。
1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。
例如,表达式a + b将返回a和b的和。
2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。
例如,表达式a - b将返回a和b的差。
3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。
例如,表达式a * b将返回a和b的积。
4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。
例如,表达式a / b将返回a除以b的商。
二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。
常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。
1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a > b将返回真或假。
2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a < b将返回真或假。
3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a >= b 将返回真或假。
4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a <= b 将返回真或假。
5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。
编程题:1.输入一名学生的成绩,判断该成绩的等级。
如>=60的,显示“合格”,<60的显示“不合格”。
程序:#include<iostream.h> //输入输出流对象的头文件void main(){ int score; //声明成绩变量,用来保存分数cout<<”输入成绩:”; //提示用户的信息cin>>score; //从键盘上输入分数传递给scoreif( score>=60) //判断该条件是否真或假cout<<”合格”<<endl; //当score>=60是真的时候,运行该语句elsecout<<”不合格”<<endl; //当score>=60是假的时候,运行该语句}分析:(1)首先该题目要求输入一个分数,则事先声明一个整型变量score。
(2)其次从键盘上输入该分数,应有输入语句cin,并由上面定义的变量来保存分数。
(3)然后根据分数来判断等级,有两种情况应该用if语句。
(4)输出的信息是根据不同条件显示字符串,用到cout输出流对象。
(5)用到标准输入输出流对象,所以在程序前加相应头文件。
2.编写一个能输出以下信息的程序。
How are you.Fine,thank you.程序:#include<iostream.h>V oid main(){ Cout<<”How are you.”<<endl; //输出字符串并换行。
Cout<<”Fine,thank you.”<<endl;}3.编写一个求两个数78、45之差的程序。
程序:#include <iostream.h>void main(){ int sum=0;sum=78+45; //求和cout<<"78+45= "<<sum<<endl;}4.编写一个求三个数14、25、16之和的程序。
第3章运算符与表达式本章要点了解运算符及其表达式的概念,熟练掌握各种运算符的运算规则。
重点掌握各种运算符的优先级和结合性。
本章的难点在于自增自减运算符的正确运用。
第一节算术运算符与算术表达式C语言中基本的算术运算符有:(1)+:加法运算符,用于计算任意两个数的和。
如:3+2,结果为5;(2)-:减法运算符,用于计算任意两个数的差。
如:3.5-2,结果为1.500000;(3)*:乘法运算符,用于计算任意两个数的乘积。
如:4*3,结果为12;(4)/:除法运算符,用于计算任意两个数的商。
如:3.6/3,结果为1.200000;(5)%:模运算符(求余运算符),用于求余数。
如:13%4,结果为1。
这几个运算符要求运算符两边都有数据,即运算对象为两个,所以称为双目算术运算符。
关于算术运算符的几点说明:(1)用算术运算符和括号将运算对象连接起来的、符合C语言语法规则的式子称为算术表达式。
运算对象可以是变量、常量、函数等。
算术表达式中运算符的结合方向为“从左至右”;*,/,%运算的优先级高于+,-运算,可以使用圆括号改变优先级别。
如:表达式3+4*3/2-1,按照从左至右的顺序,先计算优先级别较高的*、/运算,4*3,结果为12,12/2,结果为6,6和左边的3进行加法运算,得到结果9,最后计算9-1,结果为8。
(2)对于除法运算“/”,如果运算符两边的运算对象都是整数,则运算结果也是整数。
如:5/2的结果为2,而不是2.5,小数部分被舍去了。
(3)对于模运算符“%”,要求其左右两边的运算对象都为整数,结果也为整数,即只有整数才能进行求余运算;(4)“+,-”运算符有时作为正值运算符(+)和负值运算符(-),此时“+、-”变为单目运算符。
如:+3,-6。
例3.1 算术运算符和算术表达式#include<stdio.h>void main(){int a=3,b=4;printf("a+b/4%2-2.5=%f\n",a+b/4%2-2.5); /* 从左至右,按照优先级别运算*/printf("4*a/b=%d,a/b*4=%d\n",4*a/b,a/b*4); /* 两个表达式结果不同,不满足数学中的交换律*/printf("9/4=%d,-9/4=%d",9/4,-9/4); /* 两个整数做除法运算,所得结果也是整数*/ }程序运行结果:a+b/4%2-2.5=1.5000004*a/b=3,a/b*4=09/4=2,-9/4=--2第二节关系运算符与关系表达式关系运算符相当于数学中的比较运算符,用于将两个值进行比较,判断比较的结果是否符合给定的条件。
C语言第3章《运算符与表达式》测试题一、选择题(每题2分,共50分)1、表达式“2,4,6,8”的值为()A.2B.4C.6D.82、以下程序的输出结果是()main(){int a=12,b=0x12;printf(“%d%d\n”,--a,++b);}A.12 12B.12 18C.11 10D.11 193、设x和y都是int型变量,则执行表达式“x=(y=4,z=16),k=32”后,x的值为()A.4B.16C.32 D、524、设x为int型变量,执行语句“x=’A’;x*=2+2;”后,的值为()A.65B.260C.132D.语句错误5、若有语句“int a=5;a++*2;”则表达式“a++*2”的值为()A.7B.12C.5D.106、设x和y为int型变量,表达式“x+=y;y=x-y;x-=y;”的功能是()A.把x和y按从小到大排列B.把x和y按从大到小排列C.无确定结果D.交换x和y的值7、下面程序的输出结果是()main(){int x=’\23’;printf(“%d\n”--x);}A.19B.18C.23D.248、若变量f已定义为float型, i为int 型,则下面()表达式(或语句)能够实现将f的数值保留小数点后两位,第3位进行四舍五入的运算。
A.f=(f*100+0.5)/100.0B.i=f*100+0.5,f=i/100.0;C.f=(int)(f*100+0.5)/100D.f=(f/100+0.5)*100.09、下面表达式正确的是()A. a+b=5B.56=a11C.5.6+6.2%3.1D.a=5,b=6,c=710、若t为double型变量,执行逗号表达式“t=(x=0,x+5),t++;”的输出结果是()A.1B.6.0C.2.0D.1.011、下列赋值语句不正确的是()A.++tB.n1=(n2=(n3=0))C.k=m=j;D.a=b+c=112、如果下面的变量都是int型,则下面程序段的输出结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A.7B.6C.5D.413、以下程序的输出结果是()#include<stdio.h>main(){int i=23,j=12;i++;--j;printf(“%d,%d\n”,i,j);}A.23,12B.24,11C.23,11D.24,1214.下列程序执行后的输出结果(小数点后只写一位)是_______。
main(){double d; float f; long 1; int 1;i=f=l=d=20/3;printf(“%d %d%f%f\n”,I,1,f,d);}A.6 6 6.0 6.0B.6 6 6.7 6.7C.6 6 6.0 6.7D.6 6 6.7 6.015.下面表达式正确的为_________ 。
A.a+b=5B.56=a11C.i=i++D.5.6+6.2%3.116.下列表达式正确的是_______。
A.(k++)++B.k---jC.k--/=5D.(k+3)=517.若a,b,c,d都是int型变量且初值均为10,赋值语句不正确的是_______。
A.a=b=c=d;B.a=b++;C.(a+b)++;D.d=(a=b=125)-c++;18.设x和y 均为int型变量,则执行语句”x=15;y=5;printf(“%d\n”,x%=(y%=2));”后的输出结果为_____。
A.0B.1C.6D.1219.若有定义”int a;”则表达式语句”a+=a-=a*a;”等价于下列哪组表达式语句_______。
A.a+a;a*a;B.a=a+a;a=a-a*a;C.a=a+a-a*a;D.a=a-a*a;a=a+a20.设程序中x,y,z 均已赋值为大于1的整数,能正确表示1/xyz的表达式是______。
A.1/x*Y*ZB.1/(x*y*z)C.1.0/x/y/zD.1/x/y(double z)21.设有定义”char chl=‟A‟;”表达式“chl+5”的值是______。
A. …A‟B.‟F‟C.‟e‟D. 不确定22.设有定义”int a=6,b=13;”,则以下表达式中结果为3的是_______.A.(b%=a)-(a%=5)B.b%=(a%=5)C.b%=(a-a%5)D.b%=b-a%523.关于单目运算符++和—叙述正确的是___________.A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量D.它们的运算对象可以是char型变量、int型变量和float型变量24、若有以下程序段:int m=oxabc,n=oxabc;m-=n;printf(“%x\n”,m);执行结果是________。
A.0X0B.0x0C.0D.0XABC25. 以下运算符中优先级别最低的是___________.A.++ B. , C.?: D./二.填空题(每空1分,共21分)(1)若有定义”int i,j,k;”则表达式”i=10,j=20,k=30,k*=i+j”的值为________.(2)当a=6,x=6.8,b=4时,表达式”x+a%7*(int)x+8/3+b”的值为________.(3)表达式”12345==12345/3*3的值为_________.(4)表达式3*4%5的值为_________,(float)((12+7)/4)的值为__________.(5)若有定义”int i=3,j=4;”则执行完”i*=j+8;”后i的值为_______.(6)数学表达式|x|+|b|的C语句形式为_________________,|a+b|的C语句形式为___________________.(7) 若有定义”int i=10,j=2;”则表达式”j*=i++*2”的值为________.(10)把变量a1,a2定义为单精度实型变量,并赋初值1的语句是______________________.(11)空语句的形式是____________.(12)若要交换变量a和b的值(用变量c做中间变量),所用的语句为__________;___________和____________;(14)若有定义”int x=12,y=13;”则表达式x++的值为______,表达式-(++y) 的值为______。
(15)执行”int x=4,y;y=x--+3;”语句后,变量x的值是_____,y的值是______。
(16)C语言规定了运算符的优先级和结合性,其结合性分为_____ 和______(17)若有语句”int i=-19,j=i%4;printf(“%d\n”,j)则输出的结果是_____三、写出下面程序的运行结果(每题3分,共18分)1、main(){int i=8,j=7;printf(“%d\n”,++i);printf(“%d\n”,- -i);printf(“%d\n”,(i++)+(j++));printf(“%d\n”,(i--)+(j--));}2、main(){int a=2,b=4,c=6,x,y;y=((x=a+b),(b+c));printf(“y=%d,x=%d”,y,x);}结果是。
3.#include<math.h>main( ){double a=-3.0,b=2;printf(“%3.0f%3.0f\n,pow(b,fabs(a)),pow(fabs(a),b));}结果是。
4.main( ){int x=6,y;printf(“x=%d\n”,x,);y=++x;printf(“x=%d,y=%d\n”,x,y);y=x--;printf(“x=%d,y=%d\n”,x,y);结果为_____________________.5、main(){int m=6;float f=0;printf(“%d %d\n”,sizeof(m),sizeof(f));printf(“%d %d\n”,sizeof(short),sizeof(double));}结果为______________________________。
6、main ( ){int a,b,x;printf(“%d\n”,(a=3*5,a*4));printf(“%d\n”,((a=3*5,a+4),a+5));x=b=a=3,6*a;printf(“x=%d\tb=%d\n”,a,b);x=b=a=3,6*a;printf(“x=%d\tb=%d\n”,a,b);}结果为___________________________。
7、main( ){int n=7;n+=n=n*=n/3;printf(“a=%d,b=%d\n”,a,b);}结果为___________________________。
四.把下列的数学表达式写成相应的C语言算术表达式.(每题1分,共6分)1.2∏r2.2absin3003.3x4+4y n-14.25[x2+(x+y)*a]3五、编写程序(共4分)已知a=5,b=3,c=8,利用条件表达式求a,b,c三个数中的最大数。