说明
本页为第二章《数据类型和运算符》的答题测试。每节先列知识点,再进行测试;题型为判断题 + 选择题。题目在覆盖讲义/习题册原题的基础上,补充了天软考纲与历年真题风格的高频题。做错自动收入错题本。
一变量、常量与整型
对应讲义正文第 13-16 页
知识点
- 变量的值在程序运行中可以改变,常量的值无法修改。定义格式:
数据类型名 变量名; - C 语言能表示的进制:十进制(默认)、八进制(前导 0)、十六进制(前导 0x/0X);不能表示二进制。
- 格式控制符:%d 十进制、%o 八进制、%x/%X 十六进制;定义有前导、输出无前导。
- 整型数据在计算机中以补码形式存储;int 占 2 字节时范围 -32768~32767,超出会溢出。
- unsigned 无符号:2 字节时范围 0~65535,用 %u 输出;-1 以 %u 输出得 65535。
天软考点 · 进制常量判断
八进制前导 0 不能出现 8、9(018、029 非法);十六进制只能含 0~9、a~f(0xcdg 非法);C 语言没有二进制常量。这三类是必考的"非法常量"判断题。
本节测试 · 选择题
本节测试 · 判断题
二实型
对应讲义正文第 17-18 页
知识点
- 实型常量:小数形式(必须有小数点,如 .5、5.)和指数形式(e/E 两边必须有数字,右边必须是整数)。
- float 占 4 字节(%f),double 占 8 字节(%lf)。
- 用 %f / %lf 输出实型时,默认保留六位小数。
天软考点 · 指数形式陷阱
1.5e(右边无数字)、e3(左边无数字)、2e4.5(右边是小数)均非法;带正号 +1e+1 合法。sizeof(double)=8 常考。
本节测试 · 选择题
本节测试 · 判断题
三字符型
对应讲义正文第 18-24 页
知识点
- 字符以 ASCII 码存储,一个字符占 1 个字节;'0'=48、'A'=65、'a'=97。
- 字符常量用单引号括单个字符;字符串用双引号,末尾自动加结束标志 '\0'。
- 转义字符:\n 换行、\t 跳格、\b 退格、\\ 反斜杠、\ddd(1~3 位八进制)、\xhh(1~2 位十六进制)。
- sizeof 字符串含 \0,strlen 求长度不含 \0;%c 输出字符原型(无单引号)。
- char 本质是整型:可用 ASCII 码值赋值,运算时用 ASCII 码值运算。
天软考点 · 转义字符陷阱
'\018' 非法(8 不是八进制数字);'\0x2e' 非法(应为 '\x2e');'\x111' 非法(最多 2 位);'\101' 合法(=65='A')。sizeof("double")=7 常考。
本节测试 · 选择题
本节测试 · 判断题
四算术运算
对应讲义正文第 24-26 页
知识点
- 优先级:*、/、% 高于 +、-;结合性自左向右。优先级指结合的优先次序,不是计算的先后顺序。
- 除法 /:两个整型相除结果为整型(舍去小数);有一边是实型则结果为实型。
- 求余 %:两边必须是整型;结果的正负与左边一致。
- 取位公式:个位 n%10、十位 n/10%10、百位 n/100%10、千位 n/1000。
天软考点 · 奇偶与整除
n%2==0 为偶数,n%2==1 为奇数;n%k==0 表示 n 能被 k 整除。3/5=0、3/5.0=0.6、-5%3=-2、6%-5=1 都是经典考题。
本节测试 · 选择题
本节测试 · 判断题
五赋值运算
对应讲义正文第 26-29 页
知识点
- 赋值运算符 = 及复合赋值 +=、-=、*=、/=、%=;结合性自右向左,优先级倒数第二(仅高于逗号)。
- 赋值号左边必须是变量,不能是表达式或常量;C 语言不允许连等于初始化(int a=b=2; 非法)。
- 复合赋值右边整体先算:a -= 2+b 等价于 a = a-(2+b)。
- 只有赋值运算和 ++、-- 才能改变变量的值。
天软考点 · 链式复合赋值
a+=a-=a*a 类题目自右向左算:先 a-=a*a(a=-6),再 a+=a(a=-12)。实型赋给整型舍去小数(a=b+1.5 若 b=2,a 得 3)。
本节测试 · 选择题
本节测试 · 判断题
六加加、减减运算
对应讲义正文第 29-32 页
知识点
- ++、-- 为单目运算符,优先级正数第二,结合性自右向左;运算对象必须是变量。
- 在前:先加 1(减 1),再使用变量的值;在后:先使用变量的值,再加 1(减 1)。
- 单独的加加、减减(如 a++;)不区分在前在后。
- 需要区分的 4 种情况:printf 输出时、与其他运算符混合运算时、判断条件中、函数实参。
天软考点 · 先用后加易错点
a+++3 等价于 (a++)+3;int a=017; printf("%d",a++) 先转十进制 15 再输出 15(a 后变 16)。(a+2)++、5++ 均非法。
本节测试 · 选择题
本节测试 · 判断题
七逗号运算与强制类型转换
对应讲义正文第 32-34 页
知识点
- 逗号运算符优先级最低,自左向右依次计算,整个表达式的值取最后一项。
- 赋值优先于逗号:c = a, b*2; 使 c=a;c = (a, b*2); 才取 b*2。
- 强制类型转换
(类型名)表达式:单目运算符,结合性自右向左,不改变变量本身的值。
天软考点 · 混合运算
(a=2, a++, a*2) 的值为 6(每项都执行);c = a, b*2 中 c 得到的是 a(逗号优先级最低)。(int)a 后 a 的值不变,常考判断题。