第 2 课:变量、scanf 与 if/else
非 UNSW 官方材料。本文按官方 Lecture 2/3/4 和 C reference sheet 转述变量、输入输出和条件控制;练习题为原创。[S008][S009][S010][S006]
今天只做:把
int、double、char和scanf占位符配对。 下一步:主控台 · 上一课 · 下一课:循环、函数与数组 别乱跳:输入题先把格式读对,再写漂亮分支。
变量:先说类型,再放值
Lecture 2 明确把 variables、constants 和 C 里的 maths 放在早期主题;你现在要先能识别 int、double、char,再配对 printf / scanf 的格式占位符。[S008][S006]
| 类型 | 常见用途 | 输出占位符 |
|---|---|---|
int | 整数 | %d |
double | 小数 | %lf |
char | 单个字符 | %c |
scanf:先练对普通变量
Lecture 3 回顾了 printf() / scanf(),Lecture 4 继续把 scanf 错误和控制流放在一起;考前先记住普通变量读入时要把地址传给 scanf。[S009][S010]
%c 前面的空格是为了跳过前面残留的空白字符;这条是考前很实用的经验解释,来源背景是官方 debugging 和 lecture 对输入错误的反复强调。[S004][S010]
if/else:把条件翻译成分支
Lecture 3 把 if statements、logical operators、else 和循环放在 control flow 主题里;写分支时先按中文题意拆成互斥区间,再写代码。[S009]
这里第二个分支不用再写 mark >= 50,因为第一段已经排除了更小的情况。这是原创讲法,用来训练“前面的条件会影响后面的条件”。[S009]
立刻练
写一个程序读入整数 temperature:小于 18 输出 cold,18 到 27 输出 ok,大于 27 输出 hot。这道题是原创,不使用官方 Lab Exam 题目或样例。[S003]
本课过关标准
- 我能把
int、double、char和格式占位符配上。 - 我知道普通变量读入常见写法是
scanf("%d", &x)。 - 我知道读字符时常用
scanf(" %c", &ch)。 - 我能用
if/else if/else写互斥区间。
引用
- [S003] COMP1511 Lab Exam public information page: https://cgi.cse.unsw.edu.au/~cs1511/current/labexam/index.html
- [S004] COMP1511 Debugging Guide: https://cgi.cse.unsw.edu.au/~cs1511/26T1/resources/debugging_guide.html
- [S006] COMP1511 C reference sheet PDF: https://cgi.cse.unsw.edu.au/~cs1511/26T1/resources/c-reference-sheet.pdf
- [S008] Lecture 2 PDF: https://cgi.cse.unsw.edu.au/~cs1511/26T1/slides/week_1/COMP1511_26T1_Lecture02.pdf
- [S009] Lecture 3 PDF: https://cgi.cse.unsw.edu.au/~cs1511/26T1/slides/week_2/COMP1511_26T1_Lecture03.pdf
- [S010] Lecture 4 PDF: https://cgi.cse.unsw.edu.au/~cs1511/26T1/slides/week_2/COMP1511_26T1_Lecture04.pdf