其实没啥好讲的内容,这周的作业很简单,唯一的问题是:

第二题:获取最高位的时候,很多同学写出如下的代码:

...
// 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等等,

  1. 思考char[]表达字符串时的限制(\0
  2. 定义的变量到底在哪里能够看到
  3. 大小写判断、数字判断、字符操作((c - 'A' + 19) % 26 + 'A'

基本语句

分支

  1. if 条件判断中,=== 的问题
  2. if ... then ... else if ... else if ... else ... 应该如何书写
  3. switch case 语句中需要 ? 来结束当前的 case

循环

  1. for 语句怎么写,是;还是,
  2. while语句和do语句的区别?

函数

  1. 函数参数上:形参、返回值、引用(可能不考)
  2. 思路上:简单递归的使用。(可以看highest,也可以看一下上周作业的递归思路)

挺基础的了。

算法

  1. 判断xxx?(xxx可能是素数、回文等等)Luogu
  2. 数值算法:牛顿法、二分法,求解非线性方程;给定三边长,如何求三角形面积;泰勒公式求近似值(sin、cos等)
  3. 字符操作