内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础——C语言》(高教版第五版) 一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础——C语言》(高教版第五版) 一课一练的第2章的第14练,内容涵盖第2章基本数据类型与简单程序设计的2.3.2 赋值语句中的类型转换 。
《编程语言基础——C语言》(高教版第五版) 第14练
第2章 基本数据类型与简单程序设计
2.3.2 赋值语句中的类型转换
1、 单项选择题(本题共5小题)
1、当赋值语句中 “=” 左边变量与右边表达式的数据类型不一致时,C 编译系统会( )
A. 报错,不进行赋值操作
B. 直接将右边表达式的值赋给左边变量
C. 将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值
D. 将左边变量的类型转换成与右边表达式值相同的类型后再赋值
【答案】C
【解析】当赋值语句中 “=” 左边变量与右边表达式的数据类型不一致时,C 编译系统会将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值,所以选 C。
2、若有 “int a; short b; a = b;”,则在赋值过程中( )
A. a 的值会被截取
B. b 的值不会改变,其值被转换成 int 型后赋给 a
C. a 和 b 的值都会改变
D. 会产生编译错误
【答案】B
【解析】在这个赋值语句中,是将 short 型变量 b 的值转换成 int 型后再赋给 a,b 的值本身不会改变,所以选 B。
3、当左边变量的数据类型比右边表达式值的类型长时,转换后( )
A. 会丢失高位数据
B. 会改变值的精度和准确度
C. 只是改变值的表示形式
D. 会产生编译错误
【答案】C
【解析】当左边变量的数据类型比右边表达式值的类型长时,转换后的值不会改变精度或准确度,只是改变值的表示形式,所以选 C。
4、当右边表达式值的类型比左边变量的类型长时,转换结果( )
A. 不会有任何影响
B. 会对右边的数据进行截取,可能引起精度降低或出现错误结果
C. 会将左边变量的类型自动提升
D. 会产生编译错误
【答案】B
【解析】当右边表达式值的类型比左边变量的类型长时,这种转换的结果会对右边的数据进行截取,仅取出与左边变量类型相同的长度,可能引起精度降低或出现错误结果,所以选 B。
5、在程序 “double x; int a = 350; char c; c = a; x = a;” 中,执行 “c = a;” 后,( )
A. c 的值与 a 的值完全相同
B. c 只取 a 值的低 8 位
C. c 的值会自动提升为 int 型
D. 会产生编译错误
【答案】B
【解析】因为字符型在内存中仅占一个字节,执行 “c = a;” 后,char 型变量 c 只取 int 型变量 a 值的低 8 位,所以选 B。
2、 判断题(本题共3题)
1、赋值语句中,C 编译系统不会自动进行数据类型的转换。( )
【答案】×
【解析】当赋值语句中 “=” 左边变量与右边表达式的数据类型不一致时,C 编译系统会自动实现数据类型的转换,所以该说法错误。
2、当左边变量的数据类型比右边表达式值的类型长时,转换后会改变值的精度和准确度。( )
【答案】×
【解析】当左边变量的数据类型比右边表达式值的类型长时,转换后的值不会改变精度或准确度,只是改变值的表示形式,所以该说法错误。
3、在 “int a; char c; a = c;” 这个赋值语句中,是将 char 型变量 c 的值转换成 int 型后再赋给 a。( )
【答案】√
【解析】根据赋值语句类型转换原则,会将右边表达式值的类型转换成与左边变量相同的类型后再赋值,所以这里是将 char 型变量 c 的值转换成 int 型后再赋给 a,该说法正确。
3、 读程序写结果题(本题共1小题)
1、以下程序运行后输出的结果是什么?
#include <stdio.h>
#include <conio.h>
int main() {
double x;
int a = 257;
char c;
c = a;
x = a;
printf("a=%d,c=%d,x=%f
", a, c, x);
getch();
return 0;
}
【答案】a=257,c=1,x=257.000000
【解析】首先,a 的值为 257。执行 “c = a;” 时,由于 char 型在内存中占一个字节,只取 a 值的低 8 位,257 的二进制表示为 100000001,低 8 位是 00000001,即十进制的 1,所以 c 的值为 1。执行 “x = a;” 时,double 型比 int 型大,a 的值完整地赋给 x,x 的值为 257.000000。因此,最终输出 “a=257,c=1,x=257.000000”。
4、 程序设计题(本题共1小题)
1、编写一个程序,定义一个 int 型变量 a 并初始化为 512,一个 char 型变量 c 和一个 double 型变量 x,将 a 的值分别赋给 c 和 x,最后输出 a、c、x 的值。
【答案】
#include <stdio.h>
#include <conio.h>
int main() {
int a = 512;
char c;
double x;
c = a;
x = a;
printf("a=%d,c=%d,x=%f
", a, c, x);
getch();
return 0;
}
【解析】程序首先定义了一个 int 型变量 a 并初始化为 512,接着定义了 char 型变量 c 和 double 型变量 x。然后将 a 的值赋给 c 和 x,根据赋值语句的类型转换规则,c 会取 a 值的低 8 位,x 会完整接收 a 的值。最后使用 printf 函数输出 a、c、x 的值,getch 函数用于等待用户输入任意一个字符。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础——C语言》(高教版第五版) 一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础——C语言》(高教版第五版) 一课一练的第2章的第14练,内容涵盖第2章基本数据类型与简单程序设计的2.3.2 赋值语句中的类型转换 。
《编程语言基础——C语言》(高教版第五版) 第14练
第2章 基本数据类型与简单程序设计
2.3.2 赋值语句中的类型转换
1、 单项选择题(本题共5小题)
1、当赋值语句中 “=” 左边变量与右边表达式的数据类型不一致时,C 编译系统会( )
A. 报错,不进行赋值操作
B. 直接将右边表达式的值赋给左边变量
C. 将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值
D. 将左边变量的类型转换成与右边表达式值相同的类型后再赋值
2、若有 “int a; short b; a = b;”,则在赋值过程中( )
A. a 的值会被截取
B. b 的值不会改变,其值被转换成 int 型后赋给 a
C. a 和 b 的值都会改变
D. 会产生编译错误
3、当左边变量的数据类型比右边表达式值的类型长时,转换后( )
A. 会丢失高位数据
B. 会改变值的精度和准确度
C. 只是改变值的表示形式
D. 会产生编译错误
4、当右边表达式值的类型比左边变量的类型长时,转换结果( )
A. 不会有任何影响
B. 会对右边的数据进行截取,可能引起精度降低或出现错误结果
C. 会将左边变量的类型自动提升
D. 会产生编译错误
5、在程序 “double x; int a = 350; char c; c = a; x = a;” 中,执行 “c = a;” 后,( )
A. c 的值与 a 的值完全相同
B. c 只取 a 值的低 8 位
C. c 的值会自动提升为 int 型
D. 会产生编译错误
2、 判断题(本题共3题)
1、赋值语句中,C 编译系统不会自动进行数据类型的转换。( )
2、当左边变量的数据类型比右边表达式值的类型长时,转换后会改变值的精度和准确度。( )
3、在 “int a; char c; a = c;” 这个赋值语句中,是将 char 型变量 c 的值转换成 int 型后再赋给 a。( )
3、 读程序写结果题(本题共1小题)
1、以下程序运行后输出的结果是什么?
#include <stdio.h>
#include <conio.h>
int main() {
double x;
int a = 257;
char c;
c = a;
x = a;
printf("a=%d,c=%d,x=%f
", a, c, x);
getch();
return 0;
4、 }程序设计题(本题共1小题)
1、编写一个程序,定义一个 int 型变量 a 并初始化为 512,一个 char 型变量 c 和一个 double 型变量 x,将 a 的值分别赋给 c 和 x,最后输出 a、c、x 的值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$