黑马程序员----C 语言学习笔记之程序的结构及分类
2015-09-22 23:39
549 查看
------Java培训、Android培训、iOS培训、.Net培训--------
程序的结构及分类
1.什么是程序结构
结构化程序设计思想
荷兰学者Dijkstra提出了“结构化程序设计”的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性,这种方法要求程序设计者不能随心所欲的编写程序,而要按照一定的结构形式来设计和编写程序,它的一个重要的目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率
理想状态:笔直的大道
2.分支语句结构 if
原理:表达式1为真时,执行语句块1,为假时开始执行表达式2.如果表达式2为真时,执行语句块2.否则开始执行表达式3,,,依次类推
5)举例
输入:78
结果:Your level is C
6)if语句使用注意事项
a.f(age > 3);//表示空语句,什么都不干,在语法上是没有错误的
b.如果大括号里只有一条语句,那么可以省略大括号
例如if(1) printf("Hello");
c.永真式:if(1),永假式:if(0)
d.if语句结合return 语句
例如:if(a == 1)
return 0;//在一个函数中,return语句之后的语句都不会执行了
e.尽量不要省略大括号
3.分支语句结构 switch
1)格式:
原理:如果括号内的表达式的结果等于对应的常量表达式,则执行对应的语句块。如果没有对应的,则执行default
2)举例:
结果:打印B
3)case穿透
a.指,某个case语句执行完成后并没有结束,而直接向下执行其他的case语句
b.如何防止case穿透?
在每个case语句结束后,加上一个break,其作用是结束switch语句块
4)if 语句转换成 switch语句
例子(if例子参见2.9)
5)if语句与switch语句的选择
a. if语句跟switch语句之间完全可以互相转换
b. 分支比较多而且无法穷尽或进行大量的列举时,最好用if
c.如果分支数量不是那么多,但是使用if代码量比较大的时候,可以选用switch
6)switch语句使用注意事项
a.表达式的类型(switch后括号内的内容)必须是整型或者是可以转换成整型的值。 可以
放一个整型的变量(int a = 1; switch(a))或者常量(2),
也可以放一个返回值是整型的表达式(如 switch(4+5)),或者可以转换为整型的表达式switch('a' + 'a')
b.case 语句可以有多行语句,可以加括号,也可以不加大括号
例如
case 1: a = 1;
b = 2;
c = 3;
break;
c.break语句是可选的
7)case 后值的要求
a.可以是常量表达式 如 3+4
b.可以使常量 如10
c.case 语句格式 case 常量表达式://空格和冒号必须有
d.default语句的位置可以任意
e.case语句的穿透问题,如果没有break的话,会向下穿透
f.如果default放在switch语句的最后可以不加break,否则必须加break
g.case 语句后,默认的第一句话,不能是定义变量.如果非要在第一句定义,那要加个大括号,把case后的语句块包含在内
8)练习,实现一个计算器
程序的结构及分类
1.什么是程序结构
结构化程序设计思想
荷兰学者Dijkstra提出了“结构化程序设计”的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性,这种方法要求程序设计者不能随心所欲的编写程序,而要按照一定的结构形式来设计和编写程序,它的一个重要的目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率
理想状态:笔直的大道
2.分支语句结构 if
<span style="white-space:pre"> </span>1) if 格式:if(表达式/常量/变量){ 语句块1; } 原理: 先计算小括号中的表达式的值 结果为真时,会执行大括号里的语句块1 结果位假时,不会执行语句块1 2)if else语句的使用与嵌套 格式:if(表达式/常量/变量){ 语句块1; } else { 语句块2; } 原理: 先计算小括号中的表达式的值 结果为真时,会执行大括号里的语句块1 结果位假时,不会执行语句块2 3)if 嵌套,即if else中再嵌套if else 原理同1)和2) 例如 if(1 > 0 ){ if(1 > 2){ 语句块1; }else{ 语句块2; } } 4)if语句的高级用法 if(表达式1){ 语句块1; } else if(表达式2){ 语句块2; }else if(表达式3){ 语句块3; }else if(表达式4){ 语句块4; }else{ 语句块5; }
原理:表达式1为真时,执行语句块1,为假时开始执行表达式2.如果表达式2为真时,执行语句块2.否则开始执行表达式3,,,依次类推
5)举例
<span style="white-space:pre"> </span> int score = 0; printf("Input your score:"); scanf("%d",&score); if (score >= 0 && score <= 59) { printf("Your level is E"); } else if(score <= 69){ printf("Your level is D"); } else if(score <= 79){ printf("Your level is C"); } else if(score <= 89){ printf("Your level is B"); } else{ printf("Your level is A"); }
输入:78
结果:Your level is C
6)if语句使用注意事项
a.f(age > 3);//表示空语句,什么都不干,在语法上是没有错误的
b.如果大括号里只有一条语句,那么可以省略大括号
例如if(1) printf("Hello");
c.永真式:if(1),永假式:if(0)
d.if语句结合return 语句
例如:if(a == 1)
return 0;//在一个函数中,return语句之后的语句都不会执行了
e.尽量不要省略大括号
3.分支语句结构 switch
1)格式:
<span style="white-space:pre"> </span>switch(表达式)//必须是整数 { case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式3:语句4; default:语句5; }
原理:如果括号内的表达式的结果等于对应的常量表达式,则执行对应的语句块。如果没有对应的,则执行default
2)举例:
int a= 2; switch (a) { case 1: printf("A");break; case 2: printf("B");break; case 3: printf("C");break; case 4: printf("D");break; default: break; }
结果:打印B
3)case穿透
a.指,某个case语句执行完成后并没有结束,而直接向下执行其他的case语句
b.如何防止case穿透?
在每个case语句结束后,加上一个break,其作用是结束switch语句块
4)if 语句转换成 switch语句
例子(if例子参见2.9)
int score = 70; score = score / 10; switch (score) { case 0: case 1: case 2: case 3: case 4: case 5: printf("E");break; case 6: printf("D");break; case 7: printf("C");break; case 8: printf("B");break; case 9: case 10: printf("A");break; default: break; }
5)if语句与switch语句的选择
a. if语句跟switch语句之间完全可以互相转换
b. 分支比较多而且无法穷尽或进行大量的列举时,最好用if
c.如果分支数量不是那么多,但是使用if代码量比较大的时候,可以选用switch
6)switch语句使用注意事项
a.表达式的类型(switch后括号内的内容)必须是整型或者是可以转换成整型的值。 可以
放一个整型的变量(int a = 1; switch(a))或者常量(2),
也可以放一个返回值是整型的表达式(如 switch(4+5)),或者可以转换为整型的表达式switch('a' + 'a')
b.case 语句可以有多行语句,可以加括号,也可以不加大括号
例如
case 1: a = 1;
b = 2;
c = 3;
break;
c.break语句是可选的
7)case 后值的要求
a.可以是常量表达式 如 3+4
b.可以使常量 如10
c.case 语句格式 case 常量表达式://空格和冒号必须有
d.default语句的位置可以任意
e.case语句的穿透问题,如果没有break的话,会向下穿透
f.如果default放在switch语句的最后可以不加break,否则必须加break
g.case 语句后,默认的第一句话,不能是定义变量.如果非要在第一句定义,那要加个大括号,把case后的语句块包含在内
8)练习,实现一个计算器
int a, b, result = 0; char op;//操作符, printf("input the expression:"); scanf("%d%c%d",&a,&op,&b);//中间不要输入空格了 switch (op) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; default: result = a / b; break; } printf("result : %d", result);
相关文章推荐
- 命中注定码农路[一. 重新开始]
- 一个程序员的郁闷吐槽
- 百度数据挖掘实习生面试经验
- 黑马程序员——Java基础---多态、内部类、异常、包
- Java面试宝典2015版(绝对值得收藏超长版)
- 编程技术面试的五大要点
- 黑马程序员——集合框架(二) ——Map
- 【JAVA面试题】之一:第几行的obj符合垃圾收集器的收集标准?
- 常考面试题之重构一棵二叉树
- java程序员必知的 8大排序
- Tarjan算法
- 轻松搞定面试中的二叉树题目
- 程序员
- 面试题5:从尾到头打印链表
- 经典面试问题
- 面试题4:替换空格
- 程序员的十层楼
- 面试题3:二维数组中的查找
- 2016 华为操作系统 面试 深圳
- ios 9 中 程序员需要注意的地方