Week 7 - Assignment Solution
其实没啥好讲的内容,这周的作业很简单,唯一的问题是:
第二题:获取最高位的时候,很多同学写出如下的代码:
...
// here we assume n >= 0
int highest;
while (n != 0) {
highest = n;
n /= 10;
}
...
当 n == 0
时,highest
的值不确定(未初始化),需要注意规范问题。
当然你也可以直接递归:
int highest(int n) {
if (n < 10 && n > -10) {
return n;
} else {
return highest(n / 10);
}
}
关于期中考试
期中之前讲了啥:
类型系统
包括int, char, char[], float, double
等等,
- 思考
char[]
表达字符串时的限制(\0
) - 定义的变量到底在哪里能够看到
- 大小写判断、数字判断、字符操作(
(c - 'A' + 19) % 26 + 'A'
)
基本语句
分支
if
条件判断中,==
和=
的问题if ... then ... else if ... else if ... else ...
应该如何书写switch case
语句中需要 ? 来结束当前的case
循环
for
语句怎么写,是;
还是,
?while
语句和do
语句的区别?
函数
- 函数参数上:形参、返回值、引用(可能不考)
- 思路上:简单递归的使用。(可以看
highest
,也可以看一下上周作业的递归思路)
挺基础的了。
算法
- 判断xxx?(xxx可能是素数、回文等等)Luogu
- 数值算法:牛顿法、二分法,求解非线性方程;给定三边长,如何求三角形面积;泰勒公式求近似值(sin、cos等)
- 字符操作