没有合适的资源?快使用搜索试试~ 我知道了~
C语言程序设计题库 第二章:数据类型、运算符和表达式
需积分: 0 0 下载量 80 浏览量
2023-08-09
14:23:02
上传
评论 1
收藏 2.28MB PDF 举报
温馨提示
试读
26页
整型常量的类型:一、整型常量的值在-32768~+32767范围内,编译器认为是int类型。二、整型常量的值超过上述范围,而在-2147483648 ~ +2147483647范围内,编译器认为是long类型。三、当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量。四、在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L。五、在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。 浮点型数据 一、浮点型常量的表示方法 1.浮点数(float)又称为实数(real) 2.两种表示方法: *十进制小数形式:必须有小数点 如 0.123 、.123 、123.0 、0.0 、123. *指数形式:e或E之前后必须有数字;指数必须为整数 如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等 二、规范化指数形式 6.28e-2 表示 6.28× 10 -2 *只有一位非零整数的指数形式
资源推荐
资源详情
资源评论
第二章:数据类型、运算符和表达式
一、单选题
1、关于 C 语言的标识符,以下错误的说法是________。
A、C 语言中的标识符只能由字母、数字和下划线组成
B、C 语言标识符的第一个字符必须为字母或下划线
C、标识符分为关键字、预定义标识符和用户标识符,关键字和预定义标识符都不能用作用户标识符,如变量名
D、C 语言中的标识符区分大小写
解析:答案选 C
A、B、D:
C 语言的标识符一般应遵循如下的命名规则:
1、标识符必须以字母 a-z、A-Z 或下划线开头,后面可跟任意个(可为 0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标
识符中;
2、标识符区分大小写字母;
3、标识符的长度,c89 规定 31 个字符以内,c99 规定 63 个字符以内;
4、C 语言中的关键字,有特殊意义,不能作为标识符;
5、自定义标识符最好取具有一定意义的字符串,便于记忆和理解。故 A、B、D 正确。
C:标识符分为两类,分别为关键字和用户自定义标识符。关键字是有特殊含义的标识符,如 true、false 表示逻辑的真假。用户自定义标识符
是由用户按标识符构成规则生成的非保留字的标识符,如 abc 就是一个标识符。关键字不能作为用户标识符,但预定义标识符可以用作用户标识
符,例如:define。故 C 错误。
2、关于 C 语言的数据类型,以下错误的说法是________。
A、若要准确、无误差地表示自然数,应使用整数类型
B、若要保存带有多位小数的数据,应使用双精度类型
C、修饰词 signed、unsigned、long、short 等只能用于整型和字符型数据类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
解析:答案选 D
C 语言的数据类型如下:
C语言基本
数据类型
基本类型
构造类型
指针类型
空类型Void
数值类型
字符类型 char
数组
结构体 struct
共用体 union
枚举类型 enum
整型
浮点型
短整型 short
整型 int
长整型 long
单精度型 float
双精度型 double
B:单精度 float 类型可提供 6 位有效数字,双精度 double 类型可提供 16 位有效数字,所以要保存带有多位小数的数据,要使用双精度类型。故
B 正确。
D:C 语言中的逻辑值其实对应的是整型 0 和 1,没有逻辑数据类型。故 D 错误。
3、关于 C 语言的数据类型,以下错误的说法是________。
A、在 C 语言中,没有逻辑类型
B、在 C 语言中,int 型数据在内存中的存储形式是反码
C、在 C 语言中,int、char 和 short 三种类型数据在内存中所占用字节数是由 C 语言的编译系统决定的
D、在内存中,float 和 double 型数据一律以指数形式存放,所以往往存在误差
解析:答案选 B
A:C 语言中的逻辑值其实对应的是整型 0 和 1,没有逻辑类型。故 A 正确。
B:计算机中的有符号数有三种表示方法,即:原码、反码和补码。三种表示方法均有符号位和数值位两部分:其中符号位都是用‘0’表示“正”,
用‘1’表示“负”。数值位的三种表示方法各不相同。int 类型在计算机内存总以补码形式存储,使用补码可以将符号位和其他数据位统一处理,
同时减法也可以转换为加法来处理,简化了运算规则。故 B 错误。
C:请看示例一、二:C 语句意思没问题,但是这三种类型在 32 位和 64 位操作系统下的字节大小一样,但 64 位操作系统下指针大小(8bit)是
32 位操作系统下指针大小(4bit)的两倍。
D:在内存中,float 和 double 型数据一律以指数形式存放,所以往往存在误差。选项 D 正确。
4、关于 C 语言的常量和变量,以下错误的说法是________。
A、C 语言中有 4 种基本常量:整型、实型、字符型和字符串常量
B、const 变量在定义时必须初始化,并且之后其值不能再改变
C、一个变量有三要素,即变量名、变量的值和变量的运算
D、在 C 语言中,变量必须先定义后使用
解析:答案选 C
A、选项 A 正确。
B、
C语言中的常量
字面常量
const修饰的常变量
#define定义的标识符常量
枚举常量
此处所指的 const 变量应该叫做常变量,个人理解说它是常量,因为一旦定义,之后其值不能再改变,说它是变量,定义的地方还可以改动其值,
所以也具备一定变量的性质。
C、在 C 语言中,一个变量有三要素,即变量名、变量的存储空间和变量的值。选项 C 错误
D、在 C 语言中,变量和函数都必须先定义后使用。选项 D 正确。
5、关于 C 语言的运算符和表达式,以下错误的说法是________。
A、在 C 语言算术表达式的书写中,运算符两侧的操作数类型必须一致
B、条件运算符是 C 语言中唯一的三元运算符
C、相同数据类型的元素进行算术运算(+、-、*、/)得到结果还保持原操作数的数据类型
D、C 语言中表达式一定有值
解析:答案选 A
A、在 C 语言中,允许不同类型量的混合运算,在计算时计算机内部会将它们转换成相同类型的量,例如除法运算符,当左右两侧有一侧出现浮点数
时,结果会自动变为浮点数。选项 A 错误。
B、条件运算符是 C 语言中唯一的三元运算符。选项 C 正确。C 语言中的操作符整理如下:
算术操作符
关系操作符
+ - * /%
>
移位操作符
>=
>> <<
<
位操作符
<=
& ^ |
!= 用于测试“不相等
赋值操作符
== 用于测试“相等
= += -= *= /= &= ^= |= >>= <<=
逻辑操作符
单目操作符
&& 逻辑与
! 逻辑反操作
|| 逻辑或
- 负值
条件操作符
+ 正值
exp1?exp2:exp3
& 取地址
逗号表达式
Sizeof 操作数的类型长度(以字节为单位)
exp1,exp2,exp3,…expN
~ 对一个数的二进制按位取反
下标引用、函数调用和结构成员
- 前置、后置--
[] () . ->
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
C、相同数据类型的元素进行算术运算(+、-、*、/)得到结果还保持原操作数的数据类型,若有一侧操作数由整型变为浮点型,则结果也会变为浮
点型。选项 C 正确。
D、C 语言中表达式的定义:表达式是一种有值的语法结构,它由运算符(变量、常量、函数调用返回值)结合而成,每个表达式一定有一个值。
选项 D 正确。以下是 C 语言表达式分类:
C语言常见表达式
常量表达式
算数表达式
赋值表达式
关系表达式
逻辑表达式
复合表达式
逗号表达式
例子:
a, 12, 12.4
值:
作为变量或者常量本身的值。
作为条件的时候,非0即真,0即假。
例子:
a+b, c*d+a,12/3+d,i++,--a
值:
计算的结果。
作为条件的时候,非0即真,0即假。
例子
a=12;a+=12;a=c=d;
值:
赋值完a的值,即为结果。
作为条件的时候,非0即真,0即假。
例子
a > b 2 ==3
值:
表达式成立时返回1,不成立时返回0。
作为条件的时候,非0即真,0即假。
例子
a && b、 c||d、 !a
值:
表达式成立时返回1,不成立时返回0。
作为条件的时候,非0即真,0即假。
例子
x = ( y = (a + b + a > 4), z=10) //一些复合运算
值:
依据运算符优先级和结合性得到结果。
作为条件的时候,非0即真,0即假。
例子
(1,2,3,4,a) //值=最右侧a的值
值:
最右侧的值是逗号表达式的结果。
作为条件的时候,非0即真,0即假。
6、关于 C 语言中的算术运算符,以下错误的说法是________。
A、若要实现整除,则“/”号两边的操作数都要求是整型
B、若要除法的计算结果是小数,则要求“/”号的两边的操作数都是实型
C、取余运算“%”要求运算符两边的操作数都是整数
D、C 语言中算术运算符“*”、“/”和“%”运算的优先级相同
解析:答案选 B
A、要实现整除,则“/”号两边的操作数都要求是整型, C 语言的除法运算,不要求一定是整形,可以是浮点型(实型),除数和被除数的类型不一
样都可以,只有一个要求,就是除数不能为 0,否则会出现“除以 0 错误”。选项 A 正确,选项 B 错误。
C、取余运算“%”要求运算符两边的操作数都是整数。选项 C 正确。
D 、 C 语 言 中 算 术 运 算 符 “*” 、 “/” 和 “%” 运 算 的 优 先 级 相 同 。选项 D 正 确 。 以 下 是 常 见 运 算 符 优 先 级 : 转 载 自 :
https://blog.csdn.net/yuliying/article/details/72898132
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
--
()
圆括号
(表达式)/函数名(形参表)
--
.
成员选择(对象)
对象.成员名
--
->
成员选择(指针)
对象指针->成员名
--
2
-
负号运算符
-表达式
右到左
单目运算符
~
按位取反运算符
~表达式
++
自增运算符
++变量名/变量名++
--
自减运算符
--变量名/变量名--
*
取值运算符
*指针变量
&
取地址运算符
&变量名
!
逻辑非运算符
!表达式
(类型)
强制类型转换
(数据类型)表达式
--
sizeof
长度运算符
sizeof(表达式)
--
3
/
除
表达式/表达式
左到右
双目运算符
*
乘
表达式*表达式
%
余数(取模)
整型表达式%整型表达式
4
+
加
表达式+表达式
左到右
双目运算符
-
减
表达式-表达式
5
<<
左移
变量<<表达式
左到右
双目运算符
>>
右移
变量>>表达式
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
<
小于
表达式<表达式
<=
小于等于
表达式<=表达式
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
8
&
按位与
表达式&表达式
左到右
双目运算符
9
^
按位异或
表达式^表达式
左到右
双目运算符
10
|
按位或
表达式|表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式 1?
表达式 2: 表达式 3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
--
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量*=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
&=
按位与后赋值
变量&=表达式
^=
按位异或后赋值
变量^=表达式
|=
按位或后赋值
变量|=表达式
15
,
逗号运算符
表达式,表达式,…
左到右
7、关于 C 语言的逻辑运算符和逻辑表达式,以下错误的说法是________。
A、逻辑运算符“!”的运算优先级高于其它逻辑运算符和所有的算术、关系运算符
B、在 C 语言中,关系表达式和逻辑表达式的值只能是 0 或 1(分别表示“假”、“真”)
C、在 C 语言中,关系运算符和逻辑运算符两边操作数的数据类型只能是 0 或 1
D、在 C 语言中,关系运算符和逻辑运算符两边操作数可以是任何类型的数据
解析:答案选 C
A、根据上表可以看出逻辑运算符“!”的运算优先级高于其它逻辑运算符和所有的算术、关系运算符。选项 A 正确。
B、C 语言中,关系表达式(是指运算符为<,<=,>,>=,==,!=的表达式,返回值为 0 或 1,例如 a!=b,a>=0 等。)和逻辑表达式(是指运算符为或
||、与&&、非!的表达式,返回值为 0 或 1,0 表示 false,非 0 表示 true。例如!0 返回 1,0&&1 返回 0,0||1 返回 1。)的值是 0 或 1。选项 B 正
确。
C、C 语言中,关系运算符和逻辑运算符两边操作数可以是任何类型的数据,并按非 0 即为真的规则参与计算。选项 C 错误。
D、C 语言中,关系运算符和逻辑运算符两边操作数可以是任何类型的数据,并按非 0 即为真的规则参与计算。选项 D 正确。
8、关于 C 语言的自增、自减运算,以下错误的说法是________。
A、自增、自减运算符只能作用于变量,而不能作用于常量或表达式
B、自增、自减运算中前缀运算(如:++i)是“先变后用”,而后缀运算(如:i--)是“先用后变”
C、自增、自减运算符的结合性是自右向左的
D、若变量已正确定义,则(-i)++是合法的 C 语言表达式
解析:答案选 D
D、自增、自减运算不能用于表达式,由于(-i)属于表达式,所以选项 D 错误,但表达式-i++却是合法的。
自增自减规则:转载自 https://blog.csdn.net/biubiu741/article/details/53224190
++是自增运算符,是单目运算符,其作用是使单个变量的值增 1。它有两种使用情况:
1)前置:++i,先执行 i=i+1,再使用 i 值。
例如:
j=3;k=3;k=++j;
执行“k=++j;”后,k=4,j=4。
上述语句等效为:j=3;j=j+1;k=j;
2)后置:i++,先使用 i 值,再执行 i=i+1。
例如:
j=3;k=3;k=j++;
执行“k=j++;”后,k=3,j=4。
上述语句等效为:j=3;k=j;j=j+1;
--是自减运算符,是单目运算符,其作用是使单个变量的值减 1。它有两种使用情况:
1)前置:--i,先执行 i=i-1,再使用 i 值。
例如:
j=3;k=3;k=--j;
执行“k=--j;”后,k=2,j=2。
上述语句等效为:j=3;j=j-1;k=j;
2)后置:i--,先使用 i 值,再执行 i=i-1。
例如:
j=3;k=j--;
执行“k=j--;”后,k=3,j=2。
上述语句等效为:j=3;k=j;j=j-1;
注意事项:
1)自增和自减运算符,只能用于变量,不能用于常量和表达式。例如 5++,--(a+b)等都是非法的。也可用在指针变量中,使指针向上或向下一个
地址。
2)表达式 k=-i++等效于 k=(-i)++还是 k=-(i++),因为负号运算符和自增运算符优先级相同,哪一个正确就得看结合方向。自增、自减运算符及
负号运算符的结合方向是从右向左。因此,上式等效于 k=-(i++);若 i=5,则表达式 k=-i++运算之后 k 的值为-5,i 的值为 6。此赋值表达式的
值即为所赋的值-5。不要因为 k=-i++等效于 k=-(i++)就先做“++”运算!这里采用的是“先用后变”,即先拿出 i 的值做负号“-”运算,把这个
值赋给变量 k 之后变量 i 才自增。
9、下列变量定义和表达式中,正确的是________。
A、int a=1; a+=-a+=a*a;
B、int a=1,b=2; a=7+b=a+7;
C、int a=1,b=2,c=3; a=b==c;
D、int x=y=10;
解析:答案选 C
A、在 C 语言中,赋值运算的结合性是自右向左的,赋值运算符左侧只能是一个变量名,即不可以给一个计算表达式赋值,a+和-a+都是计算表达式。
选项 A 错误。
B、在 C 语言中,赋值运算的结合性是自右向左的,赋值运算符左侧只能是一个变量名,即不可以给一个计算表达式赋值,7+b 是计算表达式。选项
B 错误。
C、选项 C 是将 b==C 的值(为 0)赋给变量 a, a=0,表述正确。选项 C 正确。
D、变量定义时不能连续赋初值,可以写成:int x=10,y=10。选项 D 错误。
10、执行语句 x=(a=3,b=a--);后变量 x,a,b 的值依次为________。
A、3,3,2
B、2,3,2
C、3,2,3
D、2,3,3
解析:答案选 C
程序运行截图
步骤分析
a=3;
b=a;
a--;
解释:
先执行逗号表达式里面的内容,逗
号表达式的结合性为自左向右。
解释:
变量a在自减前先将值赋值给b。
b=a;
x=b;
解释:
变量a自减。
解释:
将变量a自减后的值赋值给b。
解释:
变量x的值为最后一个逗号表达式的
值,即x=b。
11、已知 int i; 以下关于 sizeof 错误的说法是________。
A、sizeof(int) 是合法的 C 语言表达式
B、sizeof int 是合法的 C 语言表达式
C、sizeof i 是合法的 C 语言表达式
D、sizeof 是关键字,sizeof()是运算符
解析:答案选 B
sizeof 是计算变量在内存的占空间的大小,单位是字节。
A、sizeof(int) 是计算基本数据类型 int 的占用空间的大小,单位是字节。选项 A 正确。
B、用 sizeof 计算基本数据类型占用空间的大小时,数据类型必须加上圆括号()。选项 B 错误。
C、sizeof 对变量名或者字面值可以不用括号,但计算类型必须加括号。选项 C 正确。
D、sizeof 是关键字,sizeof()是长度运算符。选项 D 正确。
C 语言中 sizeof 的使用规则:转载自 http://blog.redrose2100.com/article/214
1)使用 sizeof 是计算变量在内存的占空间的大小,单位是字节。请看示例一:
剩余25页未读,继续阅读
资源评论
一直学不会编程的小徐
- 粉丝: 61
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功