黑马程序员----C 语言学习笔记之程序的结构及分类
来源:互联网 发布:淘宝买家可以延长收货 编辑:程序博客网 时间:2024/06/03 20:37
------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
原理:如果括号内的表达式的结果等于对应的常量表达式,则执行对应的语句块。如果没有对应的,则执行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结果位假时,不会执行语句块12)if else语句的使用与嵌套格式:if(表达式/常量/变量){语句块1; } else { 语句块2; }原理:先计算小括号中的表达式的值结果为真时,会执行大括号里的语句块1结果位假时,不会执行语句块23)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);
0 0
- 黑马程序员----C 语言学习笔记之程序的结构及分类
- 黑马程序员----C 语言学习笔记之结构体
- 【黑马程序员】C语言学习笔记之第一个C程序及编译运行(一)
- 黑马程序员---C语言学习笔记之数组的基本概念和分类
- 黑马程序员---C语言学习笔记之分支结构if语句与switc语句的详解
- 黑马程序员----C 语言学习笔记之结构体数组,指针,嵌套的使用
- 黑马程序员——C语言——程序的结构与分类
- 黑马程序员-IOS学习笔记-C语言基础选择结构
- 黑马程序员-IOS学习笔记-C语言基础循环结构
- 黑马程序员-ios学习笔记 c语言 结构体
- 黑马程序员——C语言笔记之循环结构
- 【黑马程序员】C语言学习笔记之结构体(十二)
- 黑马程序员----C语言学习笔记之循环结构介绍和用法举例
- 1、黑马程序员-C语言学习笔记之第一个C程序
- 黑马程序员----C语言学习笔记之学习总结《通讯录》程序实现
- 黑马程序员-----C语言学习之循环结构
- 黑马程序员---OC学习笔记之分类(Catgory)的概念及使用
- 黑马程序员---C语言学习笔记之变量地址获取及存储原理
- 2015北京网络赛 G题 Boxes bfs
- java 面对象的思想
- csdn 使用live writer
- 洛谷9月noip模拟赛
- ubuntu 环境下编译 hadoop 2.6.0的简单方法
- 黑马程序员----C 语言学习笔记之程序的结构及分类
- Servlet事件监听器
- c# 委托、事件、lambda表达式
- java编写代码需要注意的小细节
- 正整数分解质因子
- Oracle Report Viewer 以及如何查看Oracle 报表
- scanf用法
- iOS开发技巧之autolayout自动布局
- 初入Swift之控制语句