科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件实例讲解 - C 语言的循环结构

实例讲解 - C 语言的循环结构

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这个函数的作用就是把一个百分制成绩转换成等级制。转换的过程我已经在讲解分支结构的时候详细阐述了......

作者:边城狂人 来源:yesky 2007年10月30日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
学会了 for 循环,虽然可以简化不少代码,但它似乎只能解决循环次数固定的情况。如果人数不固定,又该怎么办?比如规定如下:输入若干 0 至 100 的成绩,如果成绩不在此范围,则表式结束。请看例5,例6:

  /* 例5 */
  #include "grade.h"
  #include
  void main() {
    int n;
    printf("请输入成绩: ");
    scanf("%d", &n);
    while (grade(n) != 0) {
     printf("等级为: %c", grade(n));
     printf("请输入成绩: ");
     scanf("%d", &n);
    }
   }

  /* 例6 */
  #include "grade.h"
  #include
  void main() {
   int n;
   do {
    printf("请输入成绩: ");
    scanf("%d", &n);
    if (grade(n) != 0) {
     printf("等级为: %c", grade(n));
   }
  } while (grade(n) != 0);
  }

  例5 和例6 分别使用了 while 循环和 do-while 循环结构。两种循环结构都是在 while 后的逻辑表达式为真时执行循环体,为假时结束循环。二者的不同在于:while 循环是先判断,再执行循环体;而 do-while 循环而是先执行循环体后再作判断。因此,使用 do-while 循环至少要执行一次循环体。至于循环的执行过程,就请读者自己分析了。

  例6 中对于同一个 n,至少要执行两次 grade(n),大大降低了程序的效率。虽然可以用一个 char 型变量来解决这个问题,但我不想这样作。于是又有如下方式的改写:

  /* 例7 */
  #include "grade.h"
  #include
  void main() {
   int n;
   do {
    printf("请输入成绩: ");
    scanf("%d", &n);
    if (grade(n) == 0) {
     break;
    }
   printf("等级为: %c", grade(n));
   } while (1);
  }

  例7 中 while 语句的逻辑表达示值始终是真(1),所以这个循环也就是一个死循环,必须在循环体中用 break 语句跳出。用一个 if 语句判断跳出的时机,这也是很好理解的,就不多说了。但是看看下面的例8,可能就不是那么明白了。

  /* 例8 */
  void main() {
  int n;
  do {
   printf("请输入成绩: ");
   scanf("%d", &n);
   if (grade(n) == 0) {
    continue;
   }
   printf("等级为: %c", grade(n));
  } while (grade(n) != 0);
  }

  例8 的和例6 的区别主要就在于一个 continue 语句。这个语句可是循环结构所特有的,其作用与 break 语句相比,即有相似之处,也有相对之处。执行了 continue 语句之后,循环体中 continue 以下的语句将不再在这次循环中执行,但循环并不中断,而是开始下一次循环。

  如例8 中,满足 grade(n) == 0 的条件后,执行 continue 语句。然后 printf 语句被跳过,直接到 while 语句判断是否结束循环,如果不满足结束循环的条件,那么将会要求输入下一个成绩。不过例8 中,只要能执行到 continue 语句,while 后的条件就一定为假,循环结束。例8 和例7 的区别就在于,例8 是正常结束,而例7 是被中断。

  break 和 continue 两个语句在 C 语言的循环结构中有着举足轻重的作用。虽然使用巧妙的结构化程序手段可以避免使用这两个语句,但这两个语句的确能使程序结构更加简单明了。所以,只要能用上它们的地方,我极力推荐使用它们。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章