内容正文:
专题三 运算符、表达式和常见函数
程序设计基础
专题复习讲练测
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
考纲要求
一
知识要点 考试条目
2.顺序结构程序设计 (3)掌握运算符和表达式的使用方法;
(4)掌握输入函数及格式字符的使用方法;
(5)掌握输出语句及格式字符的使用方法。
知识点梳理
二
运算符和表达式
用于数值的算术运算,分为单目和双目运算符。
1. 双目算术运算符
一、算术运算符
运算符 名称 示例 结果说明
+ 加法 3+5 8
- 减法 7-2 5
* 乘法 4*3 12
/ 除法 5/2 2(整数除法截断小数)
% 取余 5%2 1(余数)
知识点梳理
二
运算符和表达式
2. 单目算术运算符
一、算术运算符
运算符 名称 示例 结果说明
+ 正号 +5 5
- 负号 -x x 的相反数
++ 自增 ++i(前缀)
i++(后缀) 前缀:先自增后使用
后缀:先使用后自增
-- 自减 --i(前缀)
i--(后缀) 前缀:先自减后使用
后缀:先使用后自减
知识点梳理
二
运算符和表达式
用于将右侧值赋给左侧变量,分为基本赋值和复合赋值。
二、赋值运算符
1. 基本赋值运算符
知识点梳理
二
运算符和表达式
2. 复合赋值运算符(简化表达式)
二、赋值运算符
运算符 等价形式 示例 结果说明
+= a = a + b a += b a = a + b
-= a = a - b a -= b a = a - b
*= a = a * b a *= b a = a * b
/= a = a / b a /= b a = a / b
%= a = a % b a %= b a = a % b
知识点梳理
二
运算符和表达式
用于比较两个值的关系,结果为真(非 0)或假(0)。
三、关系运算符
运算符 名称 示例 结果(若 a=5,b=3)
> 大于 a > b 1(真)
< 小于 a < b 0(假)
>= 大于等于 a >= b 1
<= 小于等于 a <= b 0
== 等于 a == b 0
!= 不等于 a != b 1
知识点梳理
二
运算符和表达式
短路特性:
四、逻辑运算符
&&:若左侧为假,右侧表达式不计算。
int x = 0;
if (x++ && 1/0) // x++为0(假),右侧1/0不执行,避免除零错误
||:若左侧为真,右侧表达式不计算。
int y = 5;
if (y-- || 1/0) // y--为5(真),右侧1/0不执行
知识点梳理
二
运算符和表达式
对二进制位进行操作,常用于底层硬件控制或高效数据处理。
五、位运算符
运算符 名称 示例(a=0b1010,b=0b1100) 结果(二进制)
~ 按位取反 ~a 0b0101
& 按位与 a & b 0b1000
` ` 按位或 `a
^ 按位异或 a ^ b 0b0110
<< 左移 a << 1 0b10100
>> 右移 a >> 1 0b0101
知识点梳理
二
运算符和表达式
应用场景:
五、位运算符
按位与(&):清 0 特定位(如a &= ~(1<<3)清 0 第 3 位)。
按位或(|):置 1 特定位(如a |= (1<<3)置 1 第 3 位)。
按位异或(^):翻转特定位(如a ^= (1<<3)翻转第 3 位)。
左移(<<):乘以 2 的幂(如a << 2等价于a*4)。
右移(>>):除以 2 的幂(如a >> 2等价于a/4,向下取整)。
知识点梳理
二
运算符和表达式
格式:表达式1 ? 表达式2 : 表达式3
六、条件运算符(三目运算符)
若表达式 1 为真,取表达式 2 的值;否则取表达式 3 的值。
知识点梳理
二
运算符和表达式
用于分隔多个表达式,按顺序计算,结果为最后一个表达式的值。
七、逗号运算符
格式:
表达式1, 表达式2, 表达式3
知识点梳理
二
运算符和表达式
八、运算符优先级与结合性
知识点梳理
二
运算符和表达式
在 C 语言中,表达式是由运算符、操作数和标点符号组成的合法序列,用于计算值或执行特定操作;赋值语句则是通过赋值运算符(=)将表达式的值赋给变量的语句。两者是程序逻辑的基础
九、表达式和赋值语句
赋值语句是由赋值表达式和一个语句结束符(即分号“;”)组成的。它的一般形式是:
变量=表达式;
知识点梳理
二
运算符和表达式
C 语言赋值语句中的类型转换分为隐式转换(自动转换)和强制转换(显式转换)。
十、类型转换
1、隐式转换(自动转换)
规则:赋值时右侧表达式的值自动转为左侧变量的类型,遵循数据类型的 “高低” 级别转换。
2、强制转换(显式转换)
语法:
(目标类型) 表达式,显式改变类型,可能引发未定义行为。
知识点梳理
二
常见函数
1. 基本语法
printf("格式控制字符串", 输出项1, 输出项2, ...);
一、输出语句及格式字符(printf函数)
格式控制字符串:包含格式字符、普通字符和转义字符。
输出项:可以是变量、表达式或常量。
知识点梳理
二
常见函数
2. 常用格式字符
一、输出语句及格式字符(printf函数)
格式字符 作用描述 示例(假设int a=10; float f=3.14; char c='A';)
%d 输出十进制整数(有符号) printf("%d", a); → 10
%u 输出无符号十进制整数 printf("%u", -a); → 4294967286(补码解释)
%f 输出浮点数(默认 6 位小数),float和double均可用 printf("%f", f); → 3.140000
%lf 与%f同义(为兼容旧代码) printf("%lf", f); → 3.140000
%c 输出单个字符 printf("%c", c); → A
%s 输出字符串(以\0结尾) printf("%s", "Hello"); → Hello
%x/%X 输出十六进制整数(小写 / 大写) printf("%x", a); → a(十六进制)
%o 输出八进制整数 printf("%o", a); → 12(八进制)
%e/%E 输出科学计数法浮点数(小写 / 大写) printf("%e", f); → 3.140000e+00
%p 输出指针地址(十六进制格式) printf("%p", &a); → 0x7ffd7b2c6af4(地址示例)
%% 输出百分号% printf("%%"); → %
知识点梳理
二
常见函数
3. 格式修饰符(控制输出格式)
一、输出语句及格式字符(printf函数)
修饰符 作用描述 示例(假设int a=5; double d=123.456789;)
%[宽度]d 限定输出宽度,不足补空格(右对齐) printf("%5d", a); → 5(宽度 5,空格填充)
%-[宽度]d 左对齐,不足补空格 printf("%-5d", a); → 5 (左对齐)
%.[精度]f 限定小数位数(四舍五入),整数部分无影响 printf("%.2f", d); → 123.46
%[宽度].[精度]f 同时限定宽度和小数位数 printf("%10.3f", d); → 123.457(宽度 10,右对齐)
%#x 输出十六进制时带前缀0x printf("%#x", a); → 0x5
%+d 强制输出符号(+或-) printf("%+d", a); → +5
知识点梳理
二
常见函数
4. 转义字符
一、输出语句及格式字符(printf函数)
转义字符 作用 示例
换行 printf("Hello
World");
\t 水平制表符(Tab) printf("Name\tScore");
\\ 反斜杠\ printf("C:\\file.txt");
\' 单引号' printf("\'A\'"); → 'A'
\" 双引号" printf("\"Hello\""); → "Hello"
知识点梳理
二
常见函数
1. 基本语法
二、输入函数及格式字符(scanf函数)
scanf("格式控制字符串", 地址项1, 地址项2, ...);
格式控制字符串:包含格式字符和可选的分隔符(如空格、逗号)。
地址项:变量的地址(需用&运算符,数组名除外)。
常用格式字符与printf类似。
知识点梳理
二
常见函数
1. 基本语法
三 单个字符操作:putchar与getchar
1.putchar(c):输出单个字符c(c可为字符常量或 ASCII 码值)。
char ch = 'B';
知识点梳理
二
常见函数
1. 基本语法
三 单个字符操作:putchar与getchar
2.getchar():从输入缓冲区读取单个字符(返回int类型)。
int c;
限时练习
三
【答案】A
1. 以下表达式中,结果为 0 的是( )
A. 5 == 3
B. 5 | 3
C. 5 ^ 3
D. 5 >> 1
限时练习
三
【答案】B
2.若int a = 3, b = 2;,则表达式(a++) + (++b)的值为( )
A. 5
B. 6
C. 7
D. 8
限时练习
三
【答案】B
3. 若要输出浮点数3.1415926,保留 3 位小数且宽度为 8,左对齐,正确的格式是( )
A. printf("%8.3f", 3.1415926);
B. printf("%-8.3f", 3.1415926);
C. printf("%8f.3", 3.1415926);
D. printf("%.3-8f", 3.1415926);
限时练习
三
【答案】B
4.若要读取double类型变量d,正确的scanf格式是( )
A. scanf("%f", &d);
B. scanf("%lf", &d);
C. scanf("%d", &d);
D. scanf("%Lf", &d);
限时练习
三
【答案】C
5.表达式3 * 2 / 4 + 5 % 3的值是( )
A. 1
B. 2
C. 3
D. 4
限时练习
三
【答案】D
6.若char ch = 'A';,执行printf("%d", ch + 32);的输出是( )
A. 94
B. 95
C. 96
D. 97
限时练习
三
【答案】A
7.以下代码的输出是( )
int a = 10;
printf("%d", a += a -= a * a);
A. -180 B. 0
C. 10 D. 20
限时练习
三
【答案】×
8.表达式5 > 3 > 1的值为 1。( )
【答案】√
9.scanf("%d,%d", &a, &b)要求输入时用逗号分隔两个整数。( )
限时练习
三
【答案】√
10.printf("%.2f", 3.1415);会输出 3.14。( )
【答案】×
11.表达式!(5 < 3)的值为 0。( )
限时练习
三
【答案】×
12. 若int a = 5;,则printf("%d", a++);会输出 6。( )
【答案】√
13.表达式5 | 3的结果是 7。( )
内容小结
四
谢谢
$$