Switch
if 嵌套循环
format:
|
|
从条件表达式 1 开始判断,若成立则执行后面的语句,若条件不成立则继续判断,直到遇到条件成立的才执行。
switch
switch 语句和 if 嵌套语句是不同的;
x > 10; x > 100; | 在 if 下的情况有多个 value 满足条件 |
---|---|
x = 10; x = 100; | 每种情况都只有 one value,且该值固定 |
特点:Clear structure
format:
|
|
object with constant 做比较,当两者相等时执行,若所有 constant 皆不等于 object,即执行 default;
break 结束当前任务,continue 结束本轮任务。
default 可以在任意位置!相当于一个 case 来执行,不过该 case 的条件是不匹配当前所有 constant;
例题
- 输入年月日,判断该日期属于年内的第 n天
- 输入年月,判断该月份有多少天
- 输入一个数,判断能否被 n 整除,能就输入n(3,5,7),都不能就输出 0
- 判断输入的符号是什么类型:大写,小写,数字,空格
- 解一元二次方程
- 简单计算器:加减乘除
补充:
-
printf 只会看双精度,float 型会被提升为 double,scanf 没有类型提升;%lf 在 printf 下是未定义的,要确保可移植性,就要坚持使用 %f;
-
在运行时确定宽度,可使用以下代码
1
printf("%*d",weight,x); // 中间的星号表示,在参数列表中第一个int参数作为宽度
-
当向 scanf 传入数组时,不需要使用取址符号
-
scanf 使用 %d 等数值格式符时,不会读取换行,而 gets 本身作为读入字符串的函数,却会将换行读入。故:scanf 和 gets 要么二选一,要么干脆不用
scanf 会将未匹配的字符留在输入流中
-
在 scanf 中,若想任意分隔符
1
scanf("%d%*c%d",&a,&b);
-
scanf 使用 %c 格式符读入字符时,空格字符和转义字符(包括回车)都会被有效字符读入
-
对于上一条,scanf 函数 %c 存在的问题!可使用 getchar() 将无效字符读走,以免被后面的字符型变量误读。
-
scanf 没有精度修饰词,即 scanf() 不能规定精度
-
EPS ,若要判断一个数是否为0,就看 该数的绝对值是不是<= EPS
-
在 if/while 的条件表达式里,n%2!=0 等价于 n%2