D;
这样写是不对的,正确的写法是: 要么去掉7行的(表达式4) 要么在7行的else后面加if b与c比较 b>c 则输出b b 穿插在课堂中的零散知识笔记: 6. if (表达式1) A; else if (表达式2) B; else if (表达式3) C; else (表达式4); D; 这样写语法不会错,但逻辑上是错误的 else (表达式4); D; 等价于 else (表达式4); D; 对任意三个数字进行排序: 如果a>b 则a与c比较 a>c 则输出a a 1. 流程 2. 每个语句的功能 3. 试 数 如何学习一些需要算法的程序【如何掌握一个程序】 1. 尝试自己去编程解决它 但要意识到大部分人都是自己无法解决的,如果解决不了,这时不要气馁 如果十五分钟还想不出来,此时我建议您就可以看答案了 2. 如果解决不了,就看答案 关键是把答案看懂,这个要花很大的精力,也是我们学习的重点 看懂一个程序要分三步:流程、每个语句的功能、试数 3. 看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义不建议看懂程序之后就立即自己敲程序 4. 照着答案去敲 5. 调试错误 6. 不看答案,自己独立把答案敲出来 if (|x-0.0000001| < 0.0000001) 是零 7. 如果程序实在无法彻底理解,就把它背会,无法彻底理解的程序很少很少几乎没有 强制类型转换 格式: (数据类型)(表达式) 功能: 把表达式的值强制转换为前面所执行的数据 类型 例子: (int)(4.5+2.2) 最终值是 6 (float)(5) 最终值是 5.0000000 浮点数的存储所带来的问题 float和 double都不能保证可以把所有实数都准确的 保存在计算机中 例子: float i = 99.9; printf(\ 最终结果在VC++6.0中的输出的结果是: 99.900002 因为浮点数无法准确存储,所以就衍生出来两个编程 问题 举例: 有一个浮点型变量x,如何判断x的值是否是零 else 不是零 为什么循环更新的变量不能定义成浮点型 进制的复习: 1. 什么是进制 逢n进一 2. 把r进制转成十进制 3. 十进制转成r进制 十进制转r进制: 除r取余,直至商为0,余数倒序 4. 不同进制所代表的数值之间的关系 十进制的3981转化成十六进制是F8D 十进制的3981和十六进制的F8D所代表的本质都是同一个数 一些琐碎的运算符知识 自增【或者自减】 前自增 -- ++i 后自增 -- i++ 前自增和后自增的异同: 相同: 最终都使i的值加1 不同: 前自增整体表达式的值是i加1之后的值 后自增整体表达式的值是i加1之前的值 为什么会出现自增 代码更精练 自增的速度更快 学习自增要明白的几个问题 1. 我们编程时应该尽量屏蔽掉前自增和后自增的差别 2. 自增表达式最好不要作为一个更大的表达式的一部分来使用 或者说 i++和++i单独成一个语句,不要把它作为一个完整的复合语句的一部分来使用 三目运算符: A ? B : C 等价于 If (A) B; else C; 逗号表达式 格式: (A, B, C, D) 功能: 从左到右执行 最终表达式的值是最后一项的值 switch (很少用到,以后讲) 把电梯程序看懂就行啦 循环 定义: 某些代码会被重复执行 分类 for------重点、用到最多、最难 1.格式: for (1; 2; 3) 语句A; 2.执行的流程【重点】 单个for循环的使用 多个for循环的嵌套使用 for(1; 2; 3) //1 for (4; 5; 6)//2 A; //3 B; //4 整体式两个语句,1 2 3是一个语句4 是第二个语句 for(1; 2; 3) for (4; 5; 6) { A; B; } 整体式一个语句 for (7; 8; 9) for(1; 2; 3) { A; B; for(4; 5; 6) C; } 整体是一个语句 3.范围问题 4.举例: 1 + 2 + 3 + ... + 100 1 + 1/ 2 + 1/3 + .... + 1/100 while 1. 执行的顺序 格式: while (表达式) 语句; 2. 与for的相互比较 for和while可以相互转换 for(1; 2; 3) A; 等价于 1; While(2) { A; 3; } while和for可以相互转化 但for的逻辑性更强,更不容易出错,推荐多使用for 3. 举例 从键盘输入一个数字,如果该数字是回文数, 则返回yes,否则返回no 回文数:正着写和倒着写都一样 比如:121 12321都是回文数 试数: >m=121 sum=0*10+121=1 m=m/10=12; >m=12成立 sum=1*10+12=12 m=12/10=1 >m=1成立 sum=12*10+1=121 m=1/10=0 >m=0不成立 sum==val 4. 什么时候使用while,什么时候使用for 没法说,用多了自然而然就知道了 do...while 格式: do { ...... }while(表达式); do...while.并不等价于for,当然也不等价于while 主要用于人机交互 一元二次方程举例 break和continue break(很重要) break如果用于循环是用来终止循环 break如果用于switch,则是用于终止switch break不能直接用于if,除了if属于循环内部的一个子句 例子: for (i=0;i<3;++i) { if (3 > 2) break; //break虽然是if内的语句,但break终 止的却是外部的for循环 printf (\嘿嘿!\\n\ //永远不会输出 } 在多层循环中,break只能终止距离它最近的 那个循环 for (i=0; i<3; ++i) { for (j=1; j<4;++j) break; //break只能终止距离它最近的循环 printf (\同志们好!\\n\ } 在多层switch嵌套中,break只能终止距离它 最近的switch 例子: