7_循环语句

【7_循环语句】关键词:循环语句分析、do...while循环、while循环、for循环
1. 循环语句分析

  • 循环语句的基本工作方式
    通过条件表达式判定是否执行循环体
    条件表达式遵循if语句表达式原则
  • dowhilefor的区别
    do语句先执行后判断,循环体至少执行一次
    while语句先判断后执行,循环体可能不执行
    for语句先判断后执行,相比while更简洁
2. do...while循环
7_循环语句
文章图片
do...while循环 3. while循环
7_循环语句
文章图片
while循环 4. for循环
7_循环语句
文章图片
for循环 5. 三种循环的使用对比
#include int f1(int n) { int ret = 0; if( n > 0 ) { do { ret += n; n--; } while(n>0); } return ret; }int f2(int n) { int ret = 0; while( n > 0 ) { ret += n; n--; }return ret; }int f3(int n) { int ret = 0; for(int i=1; i<=n; i++) { ret += i; }return ret; }int main() { printf("%d\n", f1(100)); printf("%d\n", f2(100)); printf("%d\n", f3(100)); return 0; }

6. breakcontinue的区别
  • break表示终止循环的执行
  • continue表示终止本次循环,进入下次循环执行
    思考:switch能否用continue关键字?为什么?
    不能。因为continue关键字是为循环语句设计,与分支语句switch没有任何关系。
#include void f1(int n) { int i = 0; for(i=1; i<=n; i++) { if( (i % 2) == 0 ) { break; }printf("%d ", i); }printf("\n"); }void f2(int n) { int i = 0; for(i=1; i<=n; i++) { if( (i % 2) == 0 ) { continue; }printf("%d ", i); }printf("\n"); }int main() { f1(10); f2(10); return 0; }

输出结果:
1 1 3 5 7 9

7. dobreak的妙用
一般写法:
#include #include int func(int n) { int ret = 0; int* p = (int*)malloc(sizeof(int) * n); if(NULL == p) { return ret; }if(n < 5) { return ret; }if(n > 100) { return ret; }for(int i=0; i

输出结果:
ERROR

总结:这种写法当满足if条件时,函数直接return,而没有free(p),因此会导致内存泄漏。可以使用dobreak结合使用。修改代码如下:
#include #include int func(int n) { int ret = 0; int* p = (int*)malloc(sizeof(int) * n); // 使用 do 和 break,保证free(p)一定可以执行 do { if(NULL == p) break; if(n < 5) break; if(n > 100) break; for(int i=0; i

输出结果:
free(p) ERROR

8. 小结
  • for循环先进行判断再进行循环体
  • for循环适合用于循环次数固定的场合
  • while循环先进行判断再进行循环体执行
  • while循环适合用于循环次数不定的场合
  • do...while循环先执行循环体再进行条件判断
  • do...while循环至少执行一次循环体
声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

    推荐阅读