-循环语句分析 

循环语句的基本工作方式

- 通过条件表达式判断是否执行循环体

- 条件表达式循环if语句表达式的原则

do、while、for的区别

- do语句先执行后判断,循环体至少循环一次

- while语句先判断后执行,循环体可能不执行

- for语句先判断后执行,相比while更简洁

三者在使用上的区别:

 #include <stdio.h>

 int f1(int n)
{
int ret = ; if( n > )
{
do
{
ret += n;
n--;
}
while( n > );
} return ret;
} int f2(int n)
{
int ret = ; while( n > )
{
ret += n;
n--;
} return ret;
} int f3(int n)
{
int ret = ;
int i = ; for(i=; i<=n; i++)
{
ret += i;
} return ret;
} int main()
{
printf("%d\n", f1());
printf("%d\n", f2());
printf("%d\n", f3()); return ;
}

-循环语句分析

  

break和continue的区别

- break表示终止循环的执行

- continue表示终止本次循环,进入下一次循环

思考:

switch能否用continue关键字?为什么?

答:不行,因为continue是用于循环的,而switch语句根本不是循环。

 #include <stdio.h>

 void f1(int n)
{
int i = ; for(i=; i<=n; i++)
{
if( (i % ) == )
{
break;
} printf("%d ", i);
} printf("\n");
} void f2(int n)
{
int i = ; for(i=; i<=n; i++)
{
if( (i % ) == )
{
continue;
} printf("%d ", i);
} printf("\n");
} int main()
{
f1();
f2(); return ;
}

do和while 结合的妙用

实例三:下面的例子为了执行强制free();来防止内存泄漏。

 #include <stdio.h>
#include <malloc.h> int func(int n)
{
int i = ;
int ret = ;
int* p = (int*)malloc(sizeof(int) * n); do
{
if( NULL == p ) break; if( n < ) break; if( n > ) break; for(i=; i<n; i++)
{
p[i] = i;
printf("%d\n", p[i]);
} ret = ;
}while( ); printf("free(p)\n"); free(p); return ret;
} int main()
{
if( func() )
{
printf("OK\n");
}
else
{
printf("ERROR\n");
} return ;
}

小结:

for循环先进入循环再进入循环体

for循环适合于循环次数固定的场合

while循环先进行判断再进入循环体执行

while循环适合于循环次数不定的场合

do ... while 循环先执行循环体再进行条件判断

do ... while 循环体至少执行一次循环体

05-11 22:27