第二章 数据的存储与运算《计算机基础与程序设计》广东普通专升本
第二章 数据的存储与运算
真题
一、单项选择题
1.【精析】C
标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。选项D错误。
2.【精析】A
C 语言自定义标识符的命名规则为:①只能由数字、字母、下划线组成,且第一个字符必须为字母或下划线;②字母区分大小写;③不能与C语言中已经预定义的、具有特殊用途的关键字重名。B选项中以数字开头;C、D选项为C语言中的关键字。故选A。
3.【精析】 A
选项A,表达式的值为3:①3/2=1;②2+1=3。
选项B,表达式的值为13:①14%10=4;②17-4=13。
选项C,表达式的值为2:①13/3=4;②4-2=2。
选项D,表达式的值为2:①3+6=9;②13-9=4;③9/4=2。
4.【精析】C
表达式中的逻辑运算是“或”运算,或运算两边表达式只要有一个为真,该逻辑表达式的值就为真。由题意知a为整型变量,则a的值要么是6,要么不是6,表达式(a==6)ll(a!=6)中或运算符两边必定有一个为真,逻辑表达式的结果用1表示真,用0表示假。故选C。
5.【精析】D
(double)是强制类型转换运算符,表达式((double)4/2)+2.5的计算步骤为:①(double)4=4.0;②4.0/2=2.0;③2.0+2.5=4.5。
6.【精析】B
在逻辑表达式中1(逻辑非)的优先级高于11(逻辑或)。a的值非0,为“真”,因此!a为“假”;b的值非0,为“真”,11表示逻辑或运算,“真”与“假”进行逻辑或运算的结果为“真”,即为1。
技巧点拨:逻辑或运算符(11)两侧的表达式,只要有一个为真,则结果为真,二者都为假时结果才为假。
7.【精析】B
%为求余运算符,在正整数中,若a为奇数,则a%2的值为1;若a为偶数,则a%2的值为0。
选项A正确,若a为奇数,则1==1成立,表达式的值为“真”;若a为偶数,则0==1不成立,表达式的值为“假”。
选项B错误,若a为奇数,!1=0,表达式的值为“假”;若a为偶数,!0=1,表达式的值为“真”,不符合要求。
选项C正确,若a为奇数,则1==0不成立,结果为0(假),!0=1,表达式的值为“真”;若a为偶数,则0==0成立,结果为1(真),!1=0,表达式的值为“假”。
选项D正确;若a为奇数,1>0成立,值为1(真),1&&1的值为“真”;若a为偶数,0>0不成立,结果为0(假),0&&0的值为“假”。
8.【精析】B
十进制数转换为二进制数采用除2取余法,即逐次除以2,直至商为0,得出的余数倒排,即为二进制各位的数码。
9.【精析】D
选项A错误:a的值为4,!为逻辑非运算符,表达式!a的值为0,即假。
选项B错误:&&为逻辑与运算符,b的值为3,!c的值为0,表达式b&&!c的值为0,即假。
选项C错误:>(大于)为关系运算符,按照自左至右的运算方向,a>b的值为1,1>c的值为0,所以表达式a>b>c的值为假。
选项D正确:&&(逻辑与)的优先级高于||(逻辑或),a&&b的值为1,1||c的值为真。
技巧点拨:若表达式中包含多个运算符,需要按以下的优先次序:
!(逻辑非)→算术运算符→关系运算符→&&→ll→赋值运算符
二、判断题
1.【精析】✔
C语言中变量必须先定义后使用。
特别注意:未事先进行定义的,系统不会将其当作变量名,编译时系统会输出提示信息提醒用户对其进行定义。
2.【精析】×
在C语言中没有专门的字符串变量,若想将一个字符串存放在内存中,必须使用字符数组,即用字符型数组来存放字符串,编译系统在用字符数组存储字符串常量时会自动加一个'\0'作为结束符。所以字符串"a"实际上包含两个字符:'a'和'\0'。
三、填空题
1.1
2.0
3.1
4.1
四、简答题
1.【参考答案】 十进制整数转换为r进制整数采用除r取余法,即逐次除以r,直至商为0,得出的余数倒排,即为r进制各位的数码。
十进制数2022转化为二进制数为:11111100110
十进制数2022转化为十六进制数为:0x7E6
基础题
答案速查
单项选择题
1-5 CBAAD
6-10 DBACC
11-15 AAACA
16-20 DCBAC
判断题
1-5 ×✔✔×✔
6-10 ✔×✔××
一、单项选择题
1.【答案】 C
2.【精析】B
C 语言中允许使用的数据类型有5种,即整型、浮点型、枚举类型、空类型和派生类型,不包括逻辑型。双精度型属于实型,字符型和布尔型属于整型。
3.【精析】A
长整型常量是在整型常量后面加字母1或L来显示说明的。
4.【精析】A
字符常量是括在一对单引号内的字符,字母、数字等可以直接用单引号括住,编码与特殊字符等前要加上“\”。A选项中,\后跟的是八进制数,每一位只能使用数字0~7,出现了8,A选项错误;B选项表示字符\;C选项表示字符\;D选项表示 ASCII码为十六进制数 cc的字符。
5.【精析】D
C 语言有32个关键字,它的命名是区分大小写的,float和 char是关键字,选项A、C大小写与关键字不同,错误,其中B选项 integer在C语言关键字中应写成 int,故选 D。
6.【精析】D
字母e或E代表以10为底的指数,e或E之前必须有数字,且e或E之后必须为整数,A选项、C选项错误;用八进制表示常量时,每位数字只能使用0~7,B选项错误;L表示长整型数,D选项正确。
7.【精析】B
\0是一个ASCII码为0的字符,是系统在处理字符串时自动在字符串常量结尾加上的,作为字符串结束的标志。
8.【精析】A
C语言运算符优先级:!(逻辑非)>算术运算符>关系运算符>&&>11> 赋值运算符,=是赋值运算符、==是关系运算符、+是算术运算符、++是自增运算符,故选 A。
9.【精析】 C
四个选项中运算符优先级从高到低是:&、|、&&、||。
10.【精析】C
C语言运算符优先级:!(逻辑非)>算术运算符>关系运算符>&&>11>赋值运算符,故选C。
11.【精析】A
%运算符要求参加运算的两个运算对象(即操作数)必须为整数,结果也是整数,不能对两个实型数据进行求余运算。
12.【精析】A
由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。赋值表达式的左值也可以出现在赋值运算符右侧,变量可以作为左值,而算术表达式x+y和常量则不能作为左值。选项B、C、D错误。A选项中若是y==1成立则给x赋值1,反之则赋值0。
13.【精析】A
字符型变量用来存放字符常量,只能存放一个字符,选项B、C错误;\t是水平制表符,选项D错误。
14.【精析】C
在表达式中,当不同类型的数据进行运算时,系统会自动将操作数由低类型向高类型进行转换。在该表达式中,double是最高的数据类型,选项 C正确。
15.【精析】A
在C语言程序中凡是以0开头的数都认为是八进制数,以0x开头的数都认为是十六进制数。%d表示以十进制形式输出,010对应的十进制数为8,0x10对应的十进制数为16,10就表示十进制数10。
16.【精析】 D
1/a*b*c等价于(1/a)*b*c,A选项错误;两个整数相除结果仍为整数,会导致结果去掉小数点,B选项错误;C选项同B 选项一样,结果会有偏差;1.0/a/b/c等价于1.0/(a*b*c),左操作数为浮点型,先将右操作数转换为 double型再进行运算。D选项正确。
17.【精析】C
字符串“wonderful”实际在内存中占用10个字节的存储空间。
技巧点拨:C语言编译系统在处理字符串时,在每一个字符串常量的结尾自动加一个字符'\0',作为字符串结束的标志。
18.【精析】B
定义整型变量x和y并赋同一个初值78的正确形式为““intx=78,y=78;”,选项 A 错误;字符'a'的ASCⅡ码值为97,选项B的作用是定义一个字符变量x,并赋初值为字符'a';选项C无法实现给整型变量x赋初值;以指数形式表示实型常量时,e之前必须有数字且e之后必须为整数,故选项D错误。
19.【精析】A
赋值语句是由一个赋值表达式加一个分号组成的,故选A。
20.【精析】C
C语言中变量必须先定义后使用,选项C不正确。
二、判断题
1.【精析】×
C语言的基本数据类型是整型和浮点型。
2.【精析】✔
标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
3.【精析】✔
C语言运算符优先级:!(逻辑非)>算术运算符>关系运算符>&&>11>赋值运算符>逗号运算符。
4.【精析】×
通过键盘给变量赋值时,对实型变量可以只输入一个整数,系统自动将其转换为浮点数;对整型变量可以输入一个小数,系统将去掉小数点后的数字,只将整数部分赋给变量。
5.【精析】✔
赋值表达式是将一个表达式的值赋给一个变量。a=(b=4)+(c=6)是先对b、c进行赋值,再将b、c进行相加,最后将和的值赋给a。
6.【答案】✔
7.【精析】×
由于实型变量在内存中的存储单元是由有限个字节组成的,能提供的数字也是有限的,在有效位以外的数字将被舍去,因此可能会产生误差。
8.【精析】✔
%是求余运算符,要求参加运算的两个运算对象(即操作数)必须为整数,结果也是整数,不能对两个实型数据进行求余运算。
9.【精析】×
不同类型数据间可以进行混合运算,只要遵循一定的规律,如整型与 float或 double型数据进行运算,先把整型和 float型数据转换为 double型,然后进行运算,结果是 double型。
10.【精析】×
字符常量存储在计算机存储单元中时,并不是存储字符本身,而是以其代码(一般采用ASCII 代码)存储的。
三、填空题
1. 字母 数字 下划线
2. 单精度浮点型(float型)
3. 单引号 双引号
4. 1
5. 1 4 8
6. 7
7. 取地址运算 按位与运算
8. 1
9. 0
10. 8
11. 整型(int型)
12. 1.5
6. 6
13. 2 - 2
提升题
答案速查
单项选择题
1-5 C B C D D
6-10 B D C A A
11-15 C B C A C
16-17 D D
一单项选择题
1.【精析】C
\x后只能跟1~2位十六进制数,用来表示ASCⅡ码值为该十六进制数的字符,\x111的值为273,超出了ASCⅡ码字符的允许范围。其他都是由三位以内(包括三位)的八进制数构成的转义字符。
2.【精析】B
C 语言中的浮点数有两种表示形式:①十进制小数形式;②指数形式,注意e之前必须有数字且 e后面必须为整数。A选项中e前面没有数字,不合法,其余两个数都合法;B选项中123是整数,不是浮点数,2e4.2中e后面4.2不是整数,不合法,.e5中e前面只有小数点,也是不合法的;C选项中的3个数均是合法的浮点数;D选项中的2.234和1e3是合法的浮点数,-e3因为e前面没有数字,是不合法的。
3.【精析】C
在单引号或双引号内的反斜线\表示转义字符,A选项在无引号时使用反斜线是错误的;字符常量必须用单引号括起来,B选项错误;C选项表示 ASCⅡ码为八进制数147的字符g,C选项正确;单引号只允许括起一个字符,D选项在单引号内出现了4个字符,D选项错误。
4.【精析】D
A 选项不符合C 语言语法;判断是否为大写字母的条件是其ASCⅡ码在A~Z之间,比较时要将A 和Z用'括起来,且两个关系表达式之间连接要用&&运算符,即( c>='A'&&c<='Z',故选 D。
5.【精析】D
符号常量不能用于自增,故选项D错误。
技巧点拨:自增运算符(++)和自减运算符(-)只能用于变量,不能用于常量或表达式。
6.【精析】B
++a与a++的区别是前者先加1再参加运算,后者是参加运算后再加1。所以++a+b%a+++b=(a+1)+(b%a)+b=(6+1)+4%6+4=7+4+4=15。
技巧点拨:
++i:先执行+1操作,再使用i值(+在前,先+1后使用);
i++:先使用i的值,再执行+1操作(+在后,先使用后+1)。
7.【精析】D
&&是逻辑与运算符,||是逻辑或运算符,!是逻辑非运算符。选项A,3&&4为真;选项B,3<=4为真;选项C是一个逻辑或和逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真;选项D,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算值为0。
8.【精析】C
A选项中a除以2,商为3;B选项中,a的值先减1,得到6,再用9减6,得到3;C选项中a对2求余,余数是1,即b的值为1,不为3;D选项中若a的值大于5则把3赋给b,否则把4赋给b。
9.【精析】A
取余操作时,左右操作数都必须为整数,故选 A。
10.【精析】 A
字符'E'和字符'A'的ASCⅡ码值差为4(B,C,D,E),所以表达式((a+'E'-'A')*3=(2+4)*3=18。
11.【精析】C
逗号表达式的值是最后一个式子的值,最后一个式子k赋值后等于32,那么题中表达式就相当于i=4;j=16;k=32;x=k;,所以x最终赋值为32。
12.【精析】B
&是按位与运算符,先将符号两边的数转换为二进制数,再按位进行与运算,最后将得到的二进制数转换为十进制数就是结果。2转换为二进制是10,3转换为二进制是11,进行与运算后得到二进制数10,即十进制数2。
13.【精析】 C
在表达式中,根据运算符的优先级和结合性,先计算a/b,即15/7=2,再将2+0.8赋给c,由于 c为整型变量,要舍去小数位,故选C。
14.【精析】 A
&&是逻辑与,要求两个数都非0才为真,故a&&b=0;ll是逻辑或,要求两个数有一个非0就为真,故b11c=1;==是关系运算符,要求两个表达式的值相等则为真,不相等则为0,因此(a&&b)==(b11c)为0。
15.【精析】C
赋值运算符按照“自右而左”的运算顺序,a+=a-=a*a先运算a-=a*b,a*a=4,即a=a-4=-2;再运算a+=a,即a=a+a,得到a=-4。
16.【精析】D
%d表示要输入整数,%c表示要输入字符,由输入语句可以得到各格式符之间无任何分隔符,故要求输入的数据之间也不能分开。选项A、B、C在10和e之间都加了空格,这会使系统在输入时误将空格赋值给c1,从而导致后面的输入错位,故选D。
17.【精析】D
由于(x,y)是逗号表达式,逗号表达式的结合性为从左到右,因此逗号表达式将从左到右进行运算。整个逗号表达式的值为逗号表达式中最后一个表达式的值,所以“printf(“%d\n”,(x,y));”的输出结果为333。
二填空题
1. 优先级 结合性
2. double
3. 6.0
4. 9.5
5. int k1=7,k2=7; - 2
6.(-b+ sqrt(b*b-4*a*c))/(2*a);
7. B
8. 1
9. 345%10 345/100 345/10%10
10. -180
11.


三、简答题
1.【参考答案】二进制数101101.0111转换为十进制数:


二进制数101101.0111转换为八进制数:


二进制数101101.0111转换为十六进制数:



2.【参考答案】常量:指在程序运行过程中,其值不能被改变的量。
变量:指在程序运行过程中其值可以改变的量,可以在程序运行过程中给它们赋予新的值。
3.【参考答案】变量名的命名应遵守以下基本的命名规则:
(1)变量名只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。
(2)变量的命名区分大小写。
(3)不允许使用C关键字为变量命名。
(4)变量名的长度是有限的。
(5)变量名应简单、容易记忆,应尽量做到见名知意。
(6)在同一程序的同一函数中,不能给不同的变量取相同的变量名。
4.【参考答案】C语言的基本数据类型主要有: char、 int、 float、 double等。 char为字符型,占1个字节;int为整型,占4个字节;float为单精度浮点型,占4个字节;double为双精度浮点型,占8个字节。
5.【参考答案】字符常量:用单撇号括起来的一个字符,如'A','a'等。
字符串常量:用一对双撇号括起来的字符序列,如"boy","123"等。
6.【参考答案】 i++:先使用i的值,再执行i=i+1操作。
++i:先执行i=i+1操作,再使用i的值。
