您的位置:首页 > 职场人生

黑马程序员----C 语言学习笔记之程序的结构及分类

2015-09-22 23:39 549 查看
------Java培训、Android培训、iOS培训、.Net培训--------

程序的结构及分类

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: