3.
分支语句分析 --if
if语句用于根据条件选择执行语句
else不能独立存在且总是与它最近的if相匹配
else语句后可以接连其他if语句。
if(codition)
{
//statiement 1
}
else
{
//statement 2
}
if语句中零值比较的注意点
bool型变量应该直接出现于条件中,不要进行比较
普通变量和0值比较时,0值应该出现在比较符号左边
float型变量不能直接进行0值比较,需要定义精度。
bool b=TRUE;
if(b)
{
//statement 1
}
else
{
//statement 2
}
int i = 1;
if(0 == i)
{
//statement 1
}
else
{
//statement 2
}
#define EPSINON 0.0000001
float f = 0.0;
if((-EPSINON <= f) && (f<=EPSINON))
{
//statement 1
}
else
{
//statement 2
}
分支语句分析 -- switch
switch语句对应单个条件多个分值的情形
每个case语句分支必须要有break,否则会导致分支重叠
default 语句有必要加上,已处理特殊情况
switch(表达式){
case 常量:
代码块
case 常量
代码块
default:
代码块
}
分支语句分析 -- switch
case语句中的值只能是整型或字符型
case语句排列顺序分析
按字母或数字顺序排列各条语句
正常情况放在前面,异常情况放在后面
default语句只用于处理真正的默认情况。
分支语句分析:
小结:
if语句实用于需要“按片”进行判断的情形中
switch语句实用于需要对各个离散值进行分别判断的情形中。
if语句可以安全从功能上代替switch语句,但switch语句无法替代if语句
switch语句对于多分支判断的情形更加简洁。
循环语句分析:
通过条件表达式判定是否执行循环体
条件表达式遵循if语句表达式的原则
do,while,for的区别
do语句先执行后判断,循环体至少执行一次
while语句先判断后执行,循环体可能不执行
for语句先判断后执行,相比while更简洁。
#include <stdio.h>
void f1(int i)
{
if( i < 6 )
{
printf("Failed!\n");
}
else if( (6 <= i) && (i <= 8) )
{
printf("Good!\n");
}
else
{
printf("Perfect!\n");
}
}
void f2(char i)
{
switch(i)
{
case 'c':
printf("Compile\n");
break;
case 'd':
printf("Debug\n");
break;
case 'o':
printf("Object\n");
break;
case 'r':
printf("Run\n");
break;
default:
printf("Unknown\n");
break;
}
}
int main()
{
f1(5);
f1(9);
f2('o');
f2('d');
f2('e');
}
#include <stdio.h>
int f1(int n)
{
int ret = 0;
int i = 0;
for(i=1; i<=n; i++)
{
ret += i;
}
return ret;
}
int f2(int n)
{
int ret = 0;
while( (n > 0) && (ret += n--) );
return ret;
}
int f3(int n)
{
int ret = 0;
if( n > 0 )
{
do
{
ret += n--;
}while( n );
}
return ret;
}
int main()
{
printf("%d\n", f1(10));
printf("%d\n", f2(10));
printf("%d\n", f3(10));
}
循环语句分析:
break和continue的区别:
break表示终止循环的执行
continue表示终止本次循环体,进入下次循环执行。
#include <stdio.h>
#include <malloc.h>
int func(int n)
{
int i = 0;
int ret = 0;
int* p = (int*)malloc(sizeof(int) * n);
do
{
if( NULL == p ) break;
if( n < 0 ) break;
for(i=0; i<n; i++)
{
p[i] = i;
printf("%d\n", p[i]);
}
ret = 1;
}while(0);
free(p);
return ret;
}
int main()
{
if( func(10) )
{
printf("OK");
}
else
{
printf("ERROR");
}
}