




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 C语言基础知识一,选择题1 答案是A A正确 课本第2页11行 B 可以作为复合语句的标志 C main 函数不是用户命名的,C语言中规定只能有一个主函数,这是C语言规定好的,不是用户自己定义的。 D 分号是语句结束的标志,是语句的一部分 做这个题目需要对书上的概念透彻的理解2 答案是A A 错误 课本第4页关于用户标识符是这样介绍的-标识符只能由字母、下划线和数字构成 。并且不能以数字开头。命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。这个题目考察用户标识符3 答案是B -用户标识符:只能由字母、下划线和数字构成 。并且不能以数字开头。不能和关键字相同。A答案中中划线是不能出现的;C答案中下划线是可以放在标识符的开头,D答案中,数字字符不可以出现在标识符的开头。4 答案是B 用户标识符:只能由字母、下划线和数字构成 。并且不能以数字开头。不能和关键字相同。用户标识符可以和与定义标识符相同。 A答案:int 位关键字故不可以。 C答案:int 位关键字故不可以。 D答案:printf位预定义标识符,故可以作为用户标识符,只是printf会失去原有的含义。5 答案是D 用户标识符:只能由字母、下划线和数字构成 。并且不能以数字开头。不能和关键字相同。用户标识符可以和预定义标识符相同。 long 是关键字,参照附录二 注:6-13 考察用户标识符概念掌握用户标识符的概念:用户标识符:只能由字母、下划线和数字构成 。并且不能以数字开头。不能和关键字相同。用户标识符可以和与定义标识符相同。6 答案是D D答案 以数字2开头了,不符合标识符定义7 答案是C C答案 以数字开头了 8 答案是D int 是关键字9 答案是B 答案A 是关键字,答案C是以数字开头,不符合概念,答案D出 现了小数点10 答案是A 答案A 出现了小数点11 答案是C 答案C 以数字开头了12 答案是A B答案中float 是关键字,C答案中3c以数字3开头,D答案中-5d 中中划线不属于字母,数字,下划线中一种13 答案是A B答案中-max中中划线错误,C答案中3COM以字母3数字开头,D答案中 int 是关键字,不是用户标识符的命名规则。14 答案是B A答案中15. 表示的是一个小数,即一个实型数据不是整型数据,C答案中出现了逗号,逗号不是构成数据的一部分D答案中,如果表示的二进制数据,则不应该出现字母B,如果表示的是十六进制数,则应该以0x开始。15 答案是D C语言规定,整形数据中,除了short占有2个字节之外,其余的类型都占有4个字节。实型中float占有4个字节,double占有8个字节,char占有1个字节。16 答案是B 八进制数由07八个数字组成,八进制数字必须以0开始,后面紧跟的是由07组成的数字,即不能出项8、9;B答案中出现了数字8,故不符合题意。17 答案是D 十六进制数由09、AF十六个数字组成;十六进制数必须以0x开始,大写的和小写的x都可以,后面紧跟的是由09、AF组成的数字,注意是0x,而不是ox;D选项中以ox开始,故错误。18-20 考查的是实型常量的表示方法 实行常量有两种表示方法:1、用小数点表示的形式:小数点的前后可以没有数字,但是不能同时没有数字。2、指数形式:字母E的前后必须有数字,并且后面的数字必须是整型18 答案是C 答案A中E后面0.5,0.5是小数,不是整数。 答案B 中E后面没有数字,规定,后面必须有数字,而且是整数 答案D中E前面没有数字。19 答案是C 答案A中2.0是小数,规定E后面的数字必须是整数 答案B中E前面没有数字。 答案D中E后面没有数字,规定E后面必须是整数。 20 答案是A B中八进制中不能出现数字8,八进制数由07八个数字组成,八进制数字必须以0开始,后面紧跟的是由07组成的数字,即不能出项8、9C中e后面不能是小数,必须是整数D中e后面必须是整数,不能没有数字21 答案是B B中0.4是小数,E后面不能出现小数,只能是整数。22 答案是C C中0.5是小数,E后面不能出现小数,只能是整数。23 答案是D 这一题考察的是算术运算符的优先级别以及算术运算符的运算规则。 1、 +、-运算符的优先级别:12,结合方向:自左向右。 *、/、%运算符的优先级别为:13,结合方向:自左向右 先算优先级别高的运算符,再算级别低的运算符。 其中%运算符的两边要求都是整数,不能出项小数。 2、运算符两边变量的类型想同,结果为为该类类型。如果类型不相同,那么运算的结果是级别高的类型。 float doube long unsigned char ,short int 可以记住这样一句话,整数经过运算符运算以后结果还是整数,整数和小数运算后结果是小数, 3.6-5/2+1.2+5%2 其中的/、和%为13号优先级别,所以先算5/2和5%2的值,由于运算符的两边的类型都是整型,所以最后的运算的结果也是整型。5/2的结果只能是整数,结果是2;5%2的运算结果也是整型,运算结果为1;接着算3.6-2+1.2+1表达式的值,其中都是12号运算级别,那么按照结合方向进行运算,结合方向:自左向右;所以先算3.6-2,运算符的两边的类型不相同,一个为整型,一个为实型,最后的运算结果为高类型,为:实型。最后的结果为1.6;计算完第一个表达式以后算1.6+1.2+1;按照结合方向自左向右计算,1.6+1.2运算符的两边的类型都是实型,最后的结果是整型,结果为2.8;最后算表达式2.8+1的值,两个的类型不相同,一个是小数,一个是整数,最后的计算结果为小数,所以最后的运算结果为:3.8; 24 答案是D A答案C语言中,分号是语句结束的标志,每一条语句都以分号结束;分号是语句的一部分;B 答案中,都好运算符的运算级别是1好级别,级别最低。赋值运算符的运算级别是2号运算级别,所以除了都好运算符之外,最低的就是赋值运算符。C答案中,j+;最后有一个分号,说明只是一条语句,其中j+表达式相当于j=j+1出现了赋值号,所以是赋值表达式,最后加上一个分号,够成了语句,这是一条赋值语句。故答案正确。D答案 +、-、*、/、%都是算术运算符,但是%运算符的两边要求都是整型,不能是实型;故选D。 25 答案是D 这一题考察的主要是变量的定义,其中变量的命名规则是:1、 满足标识符的命名规则,即:只能由字母、下划线和数字构成 ,并且不能以数字开头。不能和关键字相同2、 变量在使用之前要先定义。D答案中float US$,其中$是美元符号,不能构成标识符,所以不能构成变量。故选该答案。26 答案是 A优先级别:2;结合方向:自右向左 这一题考察的是赋值符号的运算规则,赋值运算符是将右边表达式的值或者是变量的值赋值给变量,注意:赋值号的左边只能是变量,不能是常量或者是表达式。 B答案 赋值号的左边是x+1,是一个表达式,故不正确。 C答案 出现了两个赋值号,那么根据结合方向进行计算,先算右边的表达式的值,即x+10=x+y,表达式的左边是一个表达式,故不正确。 D答案考查的是强制类型转换,其中强制类型转换的格式:(类型名)表达式 其中的小括号不能省略,这个答案中的double每一用小括号括起,故不正确。 27 答案是 A 这一题考查的是注释;C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。“/*”和“*/”之间不允许再插入“/*”或“*/”。注释可以出现在程序中的任意合法位置。注释部分不被执行。注释不可以嵌套使用。main() int a=0,b=0,sum; a=10; /*给a赋值10 b=20; 给变量赋值20*/ sum=a+b; printf(“a=%d,b=%d,sum=%dn”,a,b,sum);/*输出结果*/ 其中红色的部分为注释内容,注释内容不被程序执行。所以这个程序可以改为:main() int a=0,b=0,sum; a=10; sum=a+b; printf(“a+b=%dn”, sum); /*输出结果*/ 所以最后的sum的值就是10+0,最后的值是10;所以选择答案A28 答案是B 这一题考察的主要是变量的定义和赋初值, 格式: 类型名 变量=表达式或者是变量;其中变量的命名规则是:A满足标识符的命名规则,即:只能由字母、下划线和数字构成 ,并且不能以数字开头。不能和关键字相同B变量在使用之前要先定义。C变量的初始化就是在定义变量的同时给变量赋初值。在赋初值时是把赋值号右边表达式的值或者是变量的值赋值给赋值号左边的变量。赋值号右边的变量必须是先定义过的。A答案 int n1=n2=10;n1,n2都是变量,但是变量n2是个变量,应该先定义后使用,没有先定义变量n2,所以不正确。C 答案 float f=f+1.1;赋值号右边的表达式的f 应该是一个变量,应该先要定义之后才能使用。故不正确。D答案中 double x=12.3E2.5;其中的12.3E2.5不正确,因为实行常量的表示形式中指数形式中的E前后必须有数字,并且后面的数字必须是正式,不能是小数。所以该答案不正确。29 答案是 C 这一题考查的是表达式;表达式的概念:用运算符连接对象的式子 其中的运算符有不同的优先级别,根据优先级别进行运算。 A答案 k=k-k 由-和=号两个构成,根据优先级别进行运算,先算-运算,结果为0,再将0的值赋值给变量k;故正确; B答案 -k+ 有两个运算符构成,其中-号的运算级别是14号,+是14号,级别相同,根据结合方向进行运算和赋值。结合方向是:自右向左。先算k+表达式的值,表达式的值是变量原来的值。为1,最后在算负号运算符,此时表达式的值为-1; C答案 k%int(f),这里用到了%运算符和强制类型转换,其中强制类型转换的格式为:(类型名)(表达式)注意类型名的小括号不能省略,C答案中省略了类型名的小括号,故不正确。 D答案 k=f=m 这是个赋值运算符,这个表达式中的赋值运算符是2号运算级别,结合方向是自右向左。将m的值赋值给变量f,f得到的值为2.000000;将f的值赋值给变量k.则变量k 的值为2; 30 答案是 D main() int m=12,n=34;定义变量m和n并且赋初值 printf(“%d%d”,+m,n+);输出+m和n+的值 printf(“%d%d”,-n,-m); 输出-n,-m的值这一题主要考查的是变量的自加和自减运算符的运算规则。 自减自加运算符的运算级别:2号,结合方向:自右向左 1这一列的表达式的值都为变量原来的值 2表达式的值是:变量变后的值。m+m变量的值都是在原来的基础上加一m-m 变量的值都是在原来的基础上减一 该题目中:m的值为12,n的值为34. 执行第一条语句: +m的表达式的值:m的值是在原来的基础上加一,即m的值是13,表达式的值是变量变后的值,即13。n+,n的值在原来的基础上加一。即35,n+,+在变量的后面,所以表达式的值是变量原来的值,即34;执行第二条语句:-n,变量n的值在原来的基础上减一,即34,-n表达式的值是变量变后的值,即34;-m中,m的值是在原来的基础上减一,即12,-m表达式的值是变量变后的值,即12;所以最后的结果是:13343412 31答案选择:B 考点:无符号整型的存储。记住:不管是有符号或是无符号正的整型数据都以二进制形式进行存储,区别是有符号的最改为表示符号位,如果最高位为1表示负,0表示正。 分析:首先,unsigned short a;定义了一个无符号短整型变量a,int b=-1;定义了一个有符号的基本整型变量b,并赋初值为-1。 其次,-1在计算机中以补码的形式存储。步骤:(1)计算-1的绝对值1的原码,结果为:00000000 00000001。(2)原码取反得反码,结果为:11111111 11111110。(3)反码加一得补码,结果为:11111111 11111111。将11111111 11111111赋值给变量b。 第三,a=b将b中的11111111 11111111赋值给变量a,变量a是无符号整型,因此最高位的1也表示值,通过计算11111111 11111111得到65535。32答案选择:考点:赋值号左边只能是变量,不能使表达式。多个赋值号进行运算时,运算顺序是从右向左。分析:A,x1=26.8%3,26.8是实型不能进行%(求余)运算。 B,1+2=x2,赋值号左边1+2是表达式,因此是错误的。 C,x3=0x12,将一个十六进制的整型常量12赋值给变量x3是对的。 D,x4=1+2=3,首先计算1+2=3,这个表达式是错误的,赋值号左边不能是表达式。有的同学容易出错的地方是:先计算x4=1+2,再计算x4=3,这样的运算顺序是错误的。33答案选择:C考点:+、-运算符只能对变量进行自加或是自减,不能对表达式或是常量进行计算。分析:C答案中的+(i+1)就是+运算符对(i+1)表达式进行了计算,因此是错误的。例如:10+也是错误的。34答案选择:B考点:整除。例如:1/2的值是0,1/2.0才是0.5。分析:B答案中的(1/2)*(a+b)*h的值为0,因为表达式首先计算(1/2)得到的值为零,零乘以任何数都为零,和题目不符,因此是错误的。35答案选择:D考点:+、-运算的对象可以是int、float、char、double型的变量。分析:例如,int a=5;a+;结果a=6。 doubole b=5.5;a+;结果a=6.5。+就是在变量初值基础上加了一,-就是在初值基础上减了一。36答案选择:B考点:+在变量的后面时,先引用后增值;+在变量的前面时,先增值后引用。分析:k=n+,+在变量n的后面,因此是先引用后增值,那么首先计算k=n, 再计算n=n+1。所以选择B答案。37答案选择:B考点:赋值表达式值的类型与赋值号左边变量类型一致。分析:首先,int a=8,b=5,c;定义了三个整型变量a、b、c。 其次,计算c=a/b+0.4。先计算a/b就是8/5的值为1,1+0.4后的值为1.4。将1.4赋值给变脸c。 第三,变量c的类型是整型,右边的值为1.4是实型,那么它们的类型不一致,我们将1.4变为整型就是1赋值给变量c。因此选择B答案。记住不能选择A答案。38答案选择:D考点:强制类型转换,不同类型的数据相加。分析:题目中设a和b均为double类型的变量,a=5.5、b=2.5,计算(int)a+b/b表达式的值。首先计算(int)a,就是将变量a强制类型转化为int型,a的值为5.5,强制类型转换后变为了5。第二,计算b/b的值为1.000000,因为b是double类型的因此计算的结果也为double类型。第三,计算5+1.000000的结果为6.000000,因为5是整型,1.000000是实型,整型在计算机内存中占的字节数没有实型数据类型多,如果不同类型的数据进行计算,那么采取占用字节数小的变量转化为占用字节多的变量类型后再计算。因此在做题的时候应该先将5变为double类型,结果为5.000000,那么相加后就为6.000000。注意不能是答案B。39答案选择:D考点:数据的类型。分析:D答案中的long short在C语言中是不存在的。40答案选择:C考点:用户标示符。分析:C答案中$b中出现了$,$不属于字母、数字或是下划线,因此是错误的。这种题目只要谨记用户标示符的规则就行。41答案选择:C考点:赋值表达式、强制类型转换、求余运算分析:A答案中要求计算x=y*5=x+z,多个赋值号进行运算时,运算顺序是从右向左。首先计算y*5=x+z时出错,赋值号左边只能是变量不能使表达式。 B答案考查是的强制类型装换,(类型名)表达式的格式。int(15%5)和强制类型转换的格式刚好相反,应该改为(int)(15%5)才正确。 C答案是正确的。 D答案x=25%5.0,实型不能进行求余运算。42答案选择:A考点:给变量赋初始值。分析:A答案int a=b=0,在定义的时候同时定义两个以上的变量中间必须加上逗号。int a=0,b=0;才对,A答案中的表达式将不能正确定义b变量,在程序执行的时候会提示找不到b变量。43答案选择:C考点:用户标示符分析:A答案long是长整型,不能用作用户标示符。B答案y-m-d中-是中划线,不属于字母、数字、下划线,因此也不能用作用户标示符。C答案正确。D答案int是关键字,因此不能用作用户标示符。44答案选择:B考点:数值常量。分析:A答案中028以0开头表示八进制整型常量,八进制整型常量中只有0到7之间的数字,因此028是错误的。B答案正确,书中有点印刷错误,oxa23应该改为0xa23。C答案中4c1.5在C语言中没有这种类型,oabc是错误的,改为0xabc才对。D答案中10,000在英语中经常用到,但是在数学和C语言中禁止出现。45 答案选择为 B 考点:标识符分析:标识符只能由字母、下划线和数字构成 。并且不能以数字开头。答案A中大写字母属于字母,可以构成标识符,答案B是中划线,不能构成标识符,只能是下划线。答案C和答案D都能构成标识符,都符合标识符的命名规则。46 答案选择为C考点:字符计算中的所有字符都是以ASCII值存储,ASCII值为十进制数,每一个字符对应一个ASCII值。故选答案C。正数以原码存储,负数以补码存储。47 答案选择为D考点:整型数据整型数据在计算机中的存储,每一个整型数据在C语言中都占有一定的字节,其中只要是带有short的都占有2个字节,其余的都占有4个字节。本题中的A答案中都占有4个字节,是错误的,因为short只是占有2个字节,C答案中不是由用户自己定义的,是计算机中规定好的,所以答案C是错误的。答案B中并不是由于数据的大小来决定,而是规定好的,所以最后的答案为D。48 答案为A考查:赋值语句赋值号左边必须是一个代表某存储单元的变量名。只能是一个变量,不能是表达式和常量。赋值号右边必须是合法的表达式。赋值运算符的功能是先求出赋值号右边表达式的值,再将此值赋值给赋值号左边的变量;当赋值号左右两边的类型不相同时,则将右边表达式的值转换为赋值号左边变量的类型后再赋值。本题中的答案B:x=n%2.5,这里是求余运算,所以要求两边的值都必须是整型数据,但是2.5为小数。所以不正确。C答案中的赋值号左边是一个表达式,所以不正确,D答案中的5是一个常量而不是变量,所以最后的结果为A。49 答案选择为 A考查:自加运算。把k=0的值带入到这个表达式中进行运算。答案A:变量的值为0,自加后变量的值为1,表达式的值为0。答案B:符合赋值表达式,k+=1,可以表示为:k=k+1;变量变为1,表达式的值为赋值号左边的值,即1;答案C:+k 变量的值为0,自加后变量的值为1,表达式的值为1;答案D:k+1 表达式的值为0+1=1,所以表达式的值为1,只有A答案的值为0,所以答案为A50 答案选择为A考查:赋值语句赋值号左边必须是一个代表某存储单元的变量名。只能是一个变量,不能是表达式和常量。赋值号右边必须是合法的表达式。赋值运算符的功能是先求出赋值号右边表达式的值,再将此值赋值给赋值号左边的变量;当赋值号左右两边的类型不相同时,则将右边表达式的值转换为赋值号左边变量的类型后再赋值。答案B和答案中的赋值号的左边是表达式,故不正确。答案考查的是强制类型转换,格式为(类型名)(表达式)其中(类型名)称为强制类型转换运算符。小括号不能省略,表达式的小括号可以省略。将一个表达试的值转换为指定的类型。但是原表达式的值没有发生改变。答案中,double中的括号省略了,故不正确,所以答案为A。51 答案选择为C考查:赋值表达式 答案A:赋值号的左边只能是变量,不能使常量和表达式。所以答案A错误。 答案B:强制类型转换中的小括号写错。 答案D:求余运算的两边要求是整数。12.5为小数。故不正确。故最后的答案为C。52-61考查的是字符的知识。复习:字符的概念和字符的一些知识在计算机C语言中字符型常量必须用一对单引号括起的一个字符,其中的单引号称为定界符,它没有实际的意义。字符在计算机中都是以ASCII码存放的。在计算机C语言中还有一种很特殊的字符称为 “控制字符”或者是“转义字符”。该字符是有一对单引号括起来的以开头的,后面紧跟一个特定字符或一个或者是一个到三个八进制数或者是一个到两个十六进制数字。常用的转义字符有:n换行一个反斜杠t水平制表符一个单引号b退格符”一个双引号r回车符ddd三位八进制数代表一个ASCII字符f换页符xhh2位十六进制数代表一个ASCII字符其中: ddd中的ddd表示一个13位八进制ASCII码值(这个八进制数不一定要以0开头,它只要是07之间的数字即可)。例如101代表字符A; xhh中的hh代表的是一个或者是两个十六进制的ASCII码值。例如:x41代表的是字符A。 反斜杠后面的十六进制数只可由小写字母x开始,不允许使用大写字母X,也不能用0x开始。在计算机C中,所有的字符常量都作为整型常量处理,一个字符常量所对应的整型常量就是通常所说的该字符的ASCII码值。每一个字符都有对应的ASCII码值,其中 a对应的ASCII码值是97, A对应的ASCII码值是65。52 本题答案为D A答案中,双引号中的内容只能是一个字符,答案中有4个字符,故不正确。 B答案中,没有双引号。 C答案转义字符,一反斜杆开始的字符,但是反斜杆后面不能使空的,所以C答案是错误的。D答案中表示的是一个双引号。53、本题答案为B 这一题中的内容主要是字符的内容。B答案中的这一个转义字符中,表示的是八进制的字符,八进制数种不能出现大于8的数字,B答案中出现了9,这个数字大于8,所以说这个是错误的。54、本题答案为D 小写字母的ASCII值比大写字母的ASCII值大32,那么小写字母的ASCII值为100,那么大写字母的ASCII值为:100-32=68;故选答案D。55、本题答案为A 这一题考查的是字符变量的定义和赋初值,那么要求赋值号的右边是一个合法的字符变量,A答案中的赋值号的右边的值是一个不合法的字符,因为字符只能是一对单引号括起的一个字符,其中A答案中是一对单引号括起的两个字符,所以这个字符是不合法的。所以选择A答案。56、本题答案为B字符型变量x并且赋值为字符C。接着对变量的进行+32,这个变量此时的值ASCII值的想加,此时C的ASCII值为67,67+32=99,对应的字符为小写字符c,所以输出的结果是B。57、本题答案为A这一题中考查的主要是字符的运算,其中的定义了变量x,y ,接着对变量进行运算,B A+a的值可以表示为:B + a A的值为B+32的值是将变量转换为小写字母。即得到的结果为b。将x的值加上2得到的值赋值给变量y,那么y得到的值是98,对应的字符是d.所以最后的值为A。58、本题答案为B这一题考查的是数字字符的ASCii码值,其中的0的ASCII为48,1的ASCII值为49,依次往后推。答案A中1-0,相当于1-48,得到的结果为-47,C答案中的结果1-0,结果相当于是49-0=49,D答案中0-0的值为0-48等于-48。所以最后的结果为B。备注:0为转义字符,ASCII值为0;59、本题答案为D 考查的是字符常量。字符常量必须是由一对单引号括起的一个字符,A答案中的单引号下面有三个字符,不符合题目的要求。C答案中有两个字符,所以A、C答案都不正确,答案中的表示的转义字符,ddd中的ddd表示一个13位八进制ASCII码值,其中的表示的是八进制数,其中的八进制数不能出项比大的数值。所以答案错误。所以最后的答案为。60、本题答案为 B考查的是字符常量的内容。字符常量只能是单引号括起的一个字符,所以答案错误。其余的答案中,答案表示的是一个字符,、D表示的是转义字符。61、本题答案为 C字符在计算机内存中都是以ASCII码存储的。字符A的ASCII值为65,其余的往后推,那么D的ASCII值为68,本题目中输出的值是ASCII值,所以c1的ASCII值为65,c2-2的ASCII值为66。所以最后的答案为C。62-67考查的是位运算的知识。按位与:& 按位或:| 按位异或: 按位取反: 按位左移:【注意】所有的位运算均需转换成二进制后在按位进行运算。若运算量位正数则转换成原码形式。1、按位与运算(&)只要两个相应的二进制位中有一个为0,该按位与运算结果就为0。只有两个相应的二进制位都是1时,该按位于运算后结果才为1。例如:12&10的值为8。11 = 0000000000001100 & 10 = 0000000000001010 8 = 00000000000010002、按位或运算(|) 只要两个相应二进制位中有一个为1,该按位或运算后结果就为1。只有两个相应的二进制位都为0时,该按位或运算结果才为0。例如:12|10的值为14。 11 = 0000000000001100 | 10 = 0000000000001010 14 = 00000000000011103、按位异或运算() 当两个相应的二进制位都为1或都为0时,该按位异或运算的结果为0;当两个相应的二进制位一个为1另一个为0时,该按位异或运算结果为1。例如:1210的值为6。 11 = 0000000000001100 10 = 0000000000001010 6 = 0000000000000110按位异或运算可用于交换两个变量的值(不借助中间变量)。例如:a=4,b=9通过下列方式均可以交换两个变量的值。 a=ab;b=ab;a=ab;a=a+b;b=a-b;a=a-b;c=a;a=b;b=c;均可以使a=9,b=44、按位取反运算()按位取反运算符是一个当目运算符。当某个二进制位为1时,按按位取反后该位变为0;当某个二进制位为0时,按按位取反后该位变为1;例如:3的值为4。 0000000000000011 1111111111111100【注意】对一个十进制数按位取反得到的值为该数加1后在乘以-1。例如:23=(23+1)*(-1)=-24 (-47)=(-47+1)*(-1)=465、按位左移运算() 表达式格式为:数n 功能:将二进制位按位依次左移n位。高位左移后溢出,舍去不起作用;低位补0(即)右侧补0。例如:32(即3按位左移2位)的值为12 0000000000000011 0000000000001100【注意】对一个十进制数左移n位后得到的值为该数乘以2n的积。(此法仅适用于乘积不超出数据范围的情况) 例如:32的值为3*22=12 53的值为5*23=40 -15)表达式格式为:数n功能:将二进制位按位依次右移n位。低位右移后溢出,舍去不起作用;高位采用算术右移(即若原最高位为1则右移后补1,若为0则补0)。 0000000000001100 0000000000000011【注意】对一个十进制数右移n位后得到的值为该数除以2n的商(若该数为一个负数并且不能被整除则得到的值为商加-1)。例如:162的值为16/(22)=4 133的值为13/(23)=1 -163的值为-16/(23)=-2 -152的值为-15/(22)+(-1)=-4【注意】在C语言中要改变变量的值就必须对变量赋值,即对变量进行各种位运算后,若未重新赋值则该变量保持原有值不变。62 本题答案为 A该题目中的变量a的二进制表示形式为:01011101,变量b的二进制表示形式为:11110000 ,将4位取反,低四位不变。把四个答案一个一个的带入计算; 01011101 11110000 10101101故高四位取反,低四位不变。63 本题答案选A先将92转换成二进制数为:1011100,选项A中的c1c21011100 1011100 0000000 最后的结果为0;故选答案A64 本题选A 先将数字转换成二进制数,3转换成二进制数为:00000011,4转换成二进数00000100,a|b的结果为00000100 | 00000011 00000111结果为7;a&b的结果是:00000100 & 00000011 00000000最后的结果为0; 65 本题选D这一个题中输出的表达式x/y&z,先将各个数值转换成二进制数,3:000000112 :00000010 1:00000001这里出现了两个运算,有除号、按位与和按位取反运算,根据运算级别先算按位取反,得到的结果为:11111110,接着算除法,x/y的结果是3/2的结果是1,最后再算00000001和11111110进行按位与进行运算,则得到的结果为:0;66、本题答案为D首先算的是括号中的值,2+x的值:首先将2转换为二进制,在进行计算,2:00000010,x+2的值即为:00000010+10100111的值为:00000010 & 10100111 10101001把3转换成二进制的结果为:00000011,进行按位取反运算之后的结果为:11111100,再和上面的值进行运算后得到的结果为:10101001 11111100 01010101最后的结果为01010101,选D答案67、 本题答案为D这一题中的变量a和变量b都是十六进制数,将十六进制数转换成二进制数,a:00000011,0x8转变成二进制数为:00001000,a|0x8的结果为00000011 | 00001000 00001011,所以变量的值为11,变量b左移一位之后得到的值为:00010110,所以最后变量c的值为:22,故最后答案为D。二,填空题 1 计算机中的最小存储单位是:位,其中可以存放二进制数字1或者0 其中每8位构成一个字节。 2 关键字、预定义标识符、用户标识符-标识符只能由字母、下划线和数字构成 ,并且不能以数字开头;用户标识符不能和关键字相同。 3 8 4 十进制、八进制、十六进制十进制整型常量由09数字组成。八进制整型常量以数字0开头,其中的数字为07。十六进制整型常量以0x或0X开头,其中的数字可以是09、af,AF中的数字或是字母。 5 int float double 6 这是考查算术运算符,其中出现了+和/,先算/,再算+。 3.6/2,除号两边的类型不相同,一个事实型,一个事整型,最后的运算结果是实型,所以结果就为1.8;再算5+1.8的值,两个类型不相同,一个事整型,一个事实型,最后的运算结果是实型。所以最后的结果是6.8 7 a+,+在变量的后面,表达式的值是变量原来的值,变量在原来的基础上加一。a的值是15,变量结果自加后的值为16,表达式的值为变量原来的值。 8 把10赋给变量b 9 123.460000 printf(“%fn”,(int)(x*100+0.5)/100.0输出这个表达式的值(int)(x*100+0.5)/100.0,以%f,小数的形式输出数据); 这是在考察强制类型转换,强制类型的格式为:(类型名)(表达式),将表达式的值转换成括号中的类型。这个表达式先算括号中的内容。 X的值为123.4567 那么执行x*100之后的值是123.4567*100=12345.67 12345.67+0.5的值是12346.17,接着对这个数值进行强制类型转换,将该类型转换为整型。即得到的值为12346;最后除以100.0,所以结果就为123.460000 记住以上表达式的格式:这是将一个小数保留两位小数并且对第三位进行四舍五入的格式。(int)(x*100+0.5)/100.0 10 3 这一题主要考察的是逗号运算符。逗号运算符是C语言中运算级别最低的运算。由逗号构成的表达式称为逗号表达式,逗号表达式的值为最后一个表达式的值。在这个题目中,n=i=2,+i,i+第一个表达式给变量n和i赋初值,两个变量的值都是2,进行第二个表达式的计算,+i表达式的值是变量变后的值,即先计算变量i的值,计算后变量i在原来的值的基础上增加1,变为3,+i表达式的值就为3;在算最后一个表达式的值,最后一个表达式中i+,其中的表达式先计算机变量的值,变量在原来的基础上加1,变为4,表达式中+在变量的后面,所以表达式的值为变量原来的值3; 11 这一题主要考查的是位运算; 首先看位运算符的优先级别,出现了按位取反()按位异或()、左移()优先级别为:按位取反()14号运算级别、按位异或()7号运算、左移()11运算级别根据优先级的不同,先算级别高的,再算级别低的。按位取反运算符是一个当目运算符。当某个二进制位为1时,按按位取反后该位变为0;当某个二进制位为0时,按按位取反后该位变为1;左移():将二进制位按位依次左移n位。高位左移后溢出,舍去不起作用;低位补0(即)右侧补0。按位异或()当两个相应的二进制位都为1或都为0时,该按位异或运算的结果为0;当两个相应的二进制位一个为1另一个为0时,该按位异或运算结果为1。x的值为2,y的值为5,将x 、y转换成对应的二进制数为:00000010和00000101先对x按位取反得到的结果是:11111101,对y进行左移以为后得到的结果为:00001010。最后对11111101和00001010进行按位异或后得到的结果是:11110110 12 2这一题主要考察的是转义字符的概念和定义:必须用单引号括起,同时以一个反斜杠“”开头。ddd:ddd表示最多可以有三位8进制数,可以有1个、2个或者是3个;xhh:hh表示最多可以有二位16进制数,可以有1个、2个;其中的x不可以省略。注意:三位8进制数不一定以0开头,只要是07之间的数字即可。 在这个题目中只有第二个和第三个是正确的,符合题意,其余的都不符合题意。第一个中不能表示一个双引号,第四个中省略了x,故不正确,第五个中x不是十六进制数,第六个中的八进制数不能出项8,第七个中o不是八进制数,第八个中x 不是十六进制数。 13 2 20.000000 这个题目主要是考查赋值运算和复合赋值运算 将算术表达式和赋值表达式组合在一起组成复合赋值表达式。 类型:+=,-=,*=,/= 运算级别:2好优先级别 结合方向:自右向左 即先算右边的赋值,再算左边的的表达式。x=f*=n/=(c=50)表达式1; 先算表达式1的值:把50的值赋值给变量c,变量c的值为50;接着算n/=50;等价于n=n/50;n的值为100/50,为2;接着算f*=2;等价于f=f*2,f的值为2*10等于20.000000,最后再把20.000000的值赋值给变量x;所以最后x的值为20.000000;14 a=14这一题考查的是逗号运算符 a=(3*5,a+4);在这条语句中,括号的运算级别最高,先算括号的,再算赋值,括号中的内容分为3*5,a+4 先算3*5=15,在算后面的表达式的值,表达式的值为a+4,为14,再把14的值赋值给变量a ,所以变量a 的值为14.最后的结果为a=14第二章 顺序结构一 选择题1, 答案是 C考点:空语句空语句表示程序在执行时不产生任何动作,但是随意使用空语句会导致逻辑上出现错误,慎重使用。2, 答案是 B考点:语句语句必须以分号结尾,A,C,D表达式后面均没有分号,所以不能构成语句。3, 答案是 C考点:输出语句和算术表达式int x=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3, 把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以x为3输出时以%d,带符号的十进制输出数据。注意:整数除以整数,结果仍然为整数。4, 答案是 Aa,b均为整型,a/b是取ab所得商的整数部分,所以是0,再把0赋值给 c,所以是c的值是0。注意:整数除以整数,结果仍然为整数。5, 答案是 D考点:注释、变量、数据输入和输出注释部分必须用“/*”开头和用“*/”结束,其中“/”、“*”之间不能有其他符号,也不能是空格键。计算机不对注释部分进行编译,即注释不对C语言程序产生任何影响,可以在任何能插入空格符的地方插入注释。但是注释不能嵌套使用,例如:/*12212/*1221*/22*/变量要先定义后使用。并且要满足用户标识符的命名规则。A 本题中没有“/*”和“*/”,所以没有注释。故A答案错误。B 将r定义为整型不会在编译时出错,会自动进行类型转换,自动将表达式的值计算后转换成赋值号左边
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区的消防安全管理体系
- 工业智能产品的设计与生产管理
- 工业机器人技术与应用发展趋势分析
- 工业机器人技术及其在自动化生产中的应用
- 工业废水处理案例分析
- 工业机器人发展现状及未来趋势
- 工业污染防治的智能化手段-智测系统介绍
- 工业绿色发展与环境保护
- 工业物联网IIoT技术及其应用前景
- 工业自动化控制系统的优化策略
- 2025年统编版小学语文五年级下册期末综合测试题及参考答案
- 浙江临安招聘事业编制笔试真题2024
- 2025年高考数学全国一卷试题真题及答案详解(精校打印)
- DB62T 4130-2020 公路混凝土构件蒸汽养护技术规程
- 洗浴中心保安合同范本
- 行政人事部所需各类表格模板
- 2024北京西城区六年级毕业考英语试题及答案
- SH3508标准培训课件
- 2025-2026学年建德市数学三年级第一学期期末试题含解析
- 江苏省泰州市靖江市2024-2025学年八年级下学期期中地理试题(含答案)
- 2025年吉林长春市轨道交通集团有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论