1.从程序流程角度来看,程序的分类?
顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复杂程序
2.使用空语句的目的
1)纯粹消耗CPU时间,起到延时的作用
2)为了程序的结构清楚,可读性好,以后扩充新功能方便
3.基础语句
1)表达式语句
由表达式加上分号“;”组成,一般形式为 表达式;
2)函数调用语句
由函数名,实际参数加上分号“;”组成,一般形式为 函数名(实际参数表);
执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值,调用库函数,输出字符串。
4.if语句条件判断的注意点
1)布尔变量与零值比较
注意:不可将布尔量直接与TRUE、FALSE或者1、0作比较,根据布尔类型的语义,零值为假,任何非零值为真
假设布尔变量名字为flag,则正确用法为
if(flag) //表示flag为真
if(!flag) //表示flag为假
2)整型变量与零值比较
应当将整型变量用“==”或“!=”直接与0比较
例如:if(value==0)或if(value!=0)
3)浮点变量与零值比较
浮点变量不能用==或!=与任何数字比较
而是if((x>=-EPSINON)&& (x>=-EPSINON))其中EPSINON为允许的误差
4)指针变量与零值比较
指针变量应当用==或!=与NULL比较
5)补充:if(NULL==p)语法正确,是为避免程序员将p==NULL写成p=NULL, p=NULL语句是合法的,而程序会指出NULL=p非法,NULL==p在纠错的时候易发现
5.有关goto语句的争议之处
1)由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格
2)goto语句常常带来错误或隐患,它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句
6.循环语句for与while的相同点与不同点
1.两者都用于循环处理,基本流程相同,都包含初始化语句、循环体、循环执行条件、调整语句;
2.两者对break语句的处理机制也相同,直接退出循环不进行其他操作。
3.两者的主要差别就是对循环中continue语句的处理机制不同:
for循环中,当遇到continue语句时,会执行调整语句。
while循环中,当遇到continue语句时,不会执行调整语句。
在循环语句的效率中,如果可能将最长循环放在最内层,短循环放在最外层,可以提高速率。但如果更改后效率差别不大,以简洁为主
7.break与continue
break语句通常用在循环语句和开关语句中,用于跳出当前循环
注意:break语句对if-else的条件语句不起作用
在多层循环中,一个break语句只向外跳一层
continue语句作用是跳过循环本中剩余的语句而强制执行下一次循环,只用在for,while,do-while等循环体中,常与if条件语句一起使用,用来加速循环
8.switch语句
优点:是多分枝选择语句
基本格式:switch()
{
case 1:
{
break;
}
case 2:
{
break;
}
……
default:
{
break;
}
}
注意,每个case结尾加break,否则会导致多分支重叠;不要忘记default分支。
9.if语句使用的注意事项
1)在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:
if(a=5) 语句;
if(b) 语句;
都是允许的。只要表达式的值为非0,即为“真”。如在:
if(a=5)…;
中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。
又如,有程序段:
if(a=b)
printf("%d",a);
else
printf("a=0");
本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。
2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。
3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。
10.goto语句的使用格式
goto 语句标号
其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处,执行goto语句后,程序将跳转到该表好处并执行其后的语句
另外,标号必须与goto语句处于同一个函数中,但可以不再一个循环层中。通常goto语句与if语句联通,当满足某一条件时,程序调到标号处执行