内容正文:
身高体型判定系统的数据处理(2.运算符与表达式)
一、单项选择题
1、以下关于 C 语言求余运算符%的描述,正确的是( )
A. 运算数可以是任意数值类型
B. 两个运算数必须都是整型
C. 结果的符号与被除数一致
D. 可以用于浮点数求余数
【答案】B
【解析】求余运算符%要求两侧运算数必须为整型,若为浮点数编译会报错;选项 A、D 错误,选项 C 描述的是部分编译器的特性,但不是核心要求,核心规则是运算数为整型。
2、执行int a=3; printf("%d", a++);语句后,输出结果和变量 a 的最终值分别是( )
A. 3,4
B. 4,3
C. 3,3
D. 4,4
【答案】A
【解析】后自增运算符a++的执行逻辑是 “先取值,后自增”,所以输出的是 a 的初始值 3,执行完毕后 a 的值自增为 4,符合后自增的运算规则。
3、复合赋值运算符a /= 2等价于( )
A. a = 2 /a
B. a = a - 2
C. a = a / 2
D. a = 2 - a
【答案】C
【解析】复合赋值运算符的规则是 “左边变量 = 左边变量 运算符 右边值”,/=是除法与赋值的结合,因此等价于a = a / 2,简化代码的同时保持运算逻辑不变。
4、逗号表达式(3+5, 2*4, 6-1)的结果是( )
A. 8
B. 8,8,5
C. 5
D. 语法错误
【答案】C
【解析】逗号表达式的运算规则是从左到右依次计算子表达式,整个表达式的结果为最后一个子表达式的值,本题最后一个子表达式6-1的结果是 5,因此整个逗号表达式的值为 5。
5、执行float x=3.14; int a=(int)x;后,变量 x 的类型和值分别是( )
A. int 类型,3
B. float 类型,3.14
C. int 类型,3.14
D. float 类型,3
【答案】B
【解析】强制类型转换仅生成一个临时的目标类型值,不会改变原变量的类型和值,x 仍然是 float 类型,值为 3.14,变量 a 接收的是转换后的临时整型值 3。
6、将浮点型数据赋值给整型变量时,系统的自动类型转换规则是( )
A. 四舍五入保留整数
B. 直接舍弃小数部分
C. 转换为科学计数法存储
D. 编译报错
【答案】B
【解析】当浮点型转整型时,系统会自动舍弃小数部分,只保留整数部分,不会进行四舍五入,例如int a=3.99;执行后 a 的值为 3。
7、在 Visual C++ 2010 环境中,sizeof(int)的结果是( )
A. 2
B. 4
C. 8
D. 16
【答案】B
【解析】Visual C++ 2010 为基本整型int分配 4 字节存储空间,因此sizeof(int)返回 4,这是该编译环境下的固定存储特性。
8、以下变量初始化语句中,合法的是( )
A. int a=b=5;
B. int a=5, b=5;
C. int 5=a;
D. int a=3.5;
【答案】B
【解析】选项 A 错误,C 语言不支持连续赋值初始化;选项 C 错误,变量名不能以数字开头;选项 D 错误,整型变量不能直接赋值浮点型常量(会自动转整型,但初始化语法不规范);只有选项 B 符合变量初始化规则。
9、执行int a,b; a=(b=2)*3;后,变量 a 和 b 的值分别是( )
A. a=6,b=2
B. a=5,b=2
C. a=2,b=6
D. a=3,b=2
【答案】A
【解析】赋值表达式b=2的结果是 2,然后乘以 3 得到 6,再赋值给 a,因此 b 的值为 2,a 的值为 6,符合赋值表达式嵌套的运算逻辑。
10、以下关于自动类型转换的描述,正确的是( )
A. int 与 float 运算时,结果为 int 类型
B. char 与 int 运算时,char 会转换为 int 类型
C. double 与 float 运算时,结果为 float 类型
D. 自动类型转换会导致数据精度提升
【答案】B
【解析】char 类型参与运算时,会自动转换为对应的 ASCII 码(int 类型)再计算;选项 A 结果为 double 类型,选项 C 结果为 double 类型,选项 D 自动转换可能导致精度丢失(如 float 转 int)。
二、判断题
1、自增运算符++可以直接用于常量,例如++5;是合法语句。( )
【答案】×
【解析】自增运算符的作用是修改操作数的值,而常量的值不可改变,因此不能对常量使用自增、自减运算符,该语句编译会报错。
2、赋值表达式可以作为子表达式出现在其他表达式中,例如printf("%d", a=3);是合法的。( )
【答案】√
【解析】赋值表达式本身有返回值(即赋值后变量的值),因此可以出现在任何允许表达式的位置,该语句会输出 3,同时将 3 赋值给变量 a。
3、逗号运算符的优先级高于赋值运算符,因此int a=3,5;是合法的逗号表达式。( )
【答案】×
【解析】此处的逗号是变量定义的分隔符,并非逗号运算符;若要表示逗号表达式需加括号int a=(3,5);,且逗号运算符的优先级低于赋值运算符。
4、强制类型转换会改变原变量的数据类型,例如float x=3.14; (int)x;执行后 x 变为 int 类型。( )
【答案】×
【解析】强制类型转换仅生成一个临时的目标类型值,原变量的类型和值都不会改变,x 仍然是 float 类型,值为 3.14。
5、sizeof是编译时运算符,计算的是变量或数据类型所占的内存字节数,无需程序运行即可确定结果。( )
【答案】√
【解析】sizeof的结果在编译阶段就已确定,不会在程序运行时计算,它返回的是目标在内存中占用的字节数,是 C 语言中判断内存占用的核心工具。
3、 填空题
1、C 语言中,只能用于整型运算数的算术运算符是____。
【答案】%
【解析】求余运算符%要求两侧必须是整型数据,作用是获取两个整数相除后的余数,若运算数为浮点数,编译器会直接报错。该运算符是整型特有的算术运算工具。
2、复合赋值运算符a -= 5等价于完整赋值语句____。
【答案】a = a - 5
【解析】复合赋值运算符是双目运算符与赋值符的结合,执行逻辑为先完成运算符对应的运算,再将结果赋值给左边变量,既简化了代码,又保持了运算的完整性。
3、逗号表达式(2*3, 4+6, 10/2)的最终结果为____。
【答案】5
【解析】逗号表达式的运算顺序是从左到右依次计算每个子表达式,整个表达式的结果为最后一个子表达式的值,本题最后一个子表达式10/2的结果是 5。
4、将整型变量 a 强制转换为 float 类型的语法格式是____。
【答案】(float) a
【解析】强制类型转换的语法是在目标数据类型外加括号,紧跟需要转换的变量或表达式,转换后会生成一个临时的 float 类型值,原变量 a 的类型仍为 int。
5、在 C 语言中,变量定义时直接赋值的操作称为____。
【答案】变量初始化
【解析】变量初始化可以在定义时为变量赋予初始值,避免使用未初始化的变量导致的随机值问题,例如int a=5;就是对变量 a 的初始化操作。
四、程序填空题
1、题目描述:以下程序用于输入用户的体重和身高,计算 BMI 指数,同时输出身高的整数部分和身高变量的内存占用字节数,需补充缺失代码。
#include <stdio.h>
int main() {
// 定义存储体重、身高、BMI的浮点型变量
___(1) _;
int height_int, size;
printf("请输入您的体重(kg):");
scanf("%f", &weight);
printf("请输入您的身高(m):");
scanf("%f", &height);
// 根据公式计算BMI指数:BMI = 体重 / (身高 × 身高)
__(2) __;
// 强制转换身高为整型,获取整数部分
height_int = __(3)__;
printf("您的身高整数部分为:%d
", height_int);
// 计算身高变量占用的内存字节数
size = __(4)__;
printf("身高变量占用内存:%d 字节
", size);
printf("您的BMI指数为:%.2f
", bmi);
return 0;
}
【答案】
(1) float weight, height, bmi;
(2) bmi = weight / (height * height);
(3) (int) height;
(4) sizeof (height);
【解析】
(1) 体重、身高和 BMI 指数均为带小数的数值,定义为 float 类型变量,符合数据存储需求,便于后续浮点运算。
(2) 严格遵循 BMI 计算公式编写表达式,先计算身高的平方,再用体重除以该结果,确保运算逻辑与医学公式完全一致。
(3) 使用(int)height强制将浮点型身高转换为整型,系统自动舍弃小数部分,得到身高的整数部分,符合强制类型转换的语法规则。
(4) sizeof(height)用于计算 height 变量在内存中的字节数,sizeof是编译时运算符,能准确获取 float 类型变量的存储大小(Visual C++ 环境下为 4 字节)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
身高体型判定系统的数据处理(2.运算符与表达式)
一、单项选择题
1、以下关于 C 语言求余运算符%的描述,正确的是( )
A. 运算数可以是任意数值类型
B. 两个运算数必须都是整型
C. 结果的符号与被除数一致
D. 可以用于浮点数求余数
2、执行int a=3; printf("%d", a++);语句后,输出结果和变量 a 的最终值分别是( )
A. 3,4
B. 4,3
C. 3,3
D. 4,4
3、复合赋值运算符a /= 2等价于( )
A. a = 2 /a
B. a = a - 2
C. a = a / 2
D. a = 2 - a
4、逗号表达式(3+5, 2*4, 6-1)的结果是( )
A. 8
B. 8,8,5
C. 5
D. 语法错误
5、执行float x=3.14; int a=(int)x;后,变量 x 的类型和值分别是( )
A. int 类型,3
B. float 类型,3.14
C. int 类型,3.14
D. float 类型,3
6、将浮点型数据赋值给整型变量时,系统的自动类型转换规则是( )
A. 四舍五入保留整数
B. 直接舍弃小数部分
C. 转换为科学计数法存储
D. 编译报错
7、在 Visual C++ 2010 环境中,sizeof(int)的结果是( )
A. 2
B. 4
C. 8
D. 16
8、以下变量初始化语句中,合法的是( )
A. int a=b=5;
B. int a=5, b=5;
C. int 5=a;
D. int a=3.5;
9、执行int a,b; a=(b=2)*3;后,变量 a 和 b 的值分别是( )
A. a=6,b=2
B. a=5,b=2
C. a=2,b=6
D. a=3,b=2
10、以下关于自动类型转换的描述,正确的是( )
A. int 与 float 运算时,结果为 int 类型
B. char 与 int 运算时,char 会转换为 int 类型
C. double 与 float 运算时,结果为 float 类型
D. 自动类型转换会导致数据精度提升
二、判断题
1、自增运算符++可以直接用于常量,例如++5;是合法语句。( )
2、赋值表达式可以作为子表达式出现在其他表达式中,例如printf("%d", a=3);是合法的。( )
3、逗号运算符的优先级高于赋值运算符,因此int a=3,5;是合法的逗号表达式。( )
4、强制类型转换会改变原变量的数据类型,例如float x=3.14; (int)x;执行后 x 变为 int 类型。( )
5、sizeof是编译时运算符,计算的是变量或数据类型所占的内存字节数,无需程序运行即可确定结果。( )
3、 填空题
1、C 语言中,只能用于整型运算数的算术运算符是____。
2、复合赋值运算符a -= 5等价于完整赋值语句____。
3、逗号表达式(2*3, 4+6, 10/2)的最终结果为____。
4、将整型变量 a 强制转换为 float 类型的语法格式是____。
5、在 C 语言中,变量定义时直接赋值的操作称为____。
四、程序填空题
1、题目描述:以下程序用于输入用户的体重和身高,计算 BMI 指数,同时输出身高的整数部分和身高变量的内存占用字节数,需补充缺失代码。
#include <stdio.h>
int main() {
// 定义存储体重、身高、BMI的浮点型变量
___(1) _;
int height_int, size;
printf("请输入您的体重(kg):");
scanf("%f", &weight);
printf("请输入您的身高(m):");
scanf("%f", &height);
// 根据公式计算BMI指数:BMI = 体重 / (身高 × 身高)
__(2) __;
// 强制转换身高为整型,获取整数部分
height_int = __(3)__;
printf("您的身高整数部分为:%d
", height_int);
// 计算身高变量占用的内存字节数
size = __(4)__;
printf("身高变量占用内存:%d 字节
", size);
printf("您的BMI指数为:%.2f
", bmi);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$