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

时间:2010-04-23 17:28:49  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:score / 10) {    case 10: case 9:         return 'A';    case 8:        return 'B';    case 7:        return 'C';    case 6:        return 'D';    case 5: case 4: case 3:    case 2: case 1: case 0:        return 'E';    default:      ...
  正文:

  这一讲开始之前,我们需要准备一个函数。这个函数的作用就是把一个百分制成绩转换成等级制。转换的过程我已经在讲解分支结构的时候详细阐述了,现在仅提供函数如下:

  /* 准备 grade.h */
  char grade(int score) {
   switch (score / 10) {
    case 10: case 9:
        return 'A';
    case 8:
        return 'B';
    case 7:
        return 'C';
    case 6:
        return 'D';
    case 5: case 4: case 3:
    case 2: case 1: case 0:
        return 'E';
    default:
        return 0;
   }
  }

  在讲解分支结构时提出的实例都只能解决一个成绩的情况。假如需要将 5 个人的成绩进行转换,最简单的办法如下:

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

  例1 的结构非常简单易懂,但是书写起来只有一个感觉--烦!同样的三句话,居然重复了 5 次。如果这个班的人数不止 5 人,而是数十人的话,……天啊!简直想都不敢想!

  C 语言当然不会笨得来一点方便都不给,这个"方便",就是循环结构。循环结构的目的就是减少重复代码,减轻程序员的负担。而其形式,在 C 语言中有三种:for 循环、while 循环和 do-while 循环。正面分别介绍如下:

  for 循环的基础格式是 for (语句1; 逻辑表达式1; 语句2) {语句组1},大括号包括其中的语句组1 也可以是一条语句。其执行过程如下:先执行语句1,然后判断逻辑表达式1。如果逻辑表达式1 的值为"真(非0)",则执行语句组1,否则结束循环。在没结束循环的情况下,执行了语句组1 之后,执行语句2。然后再对逻辑表达式1 进行判断,再……,如此循环直到逻辑表达式1 为"假(0)"时为止。于是,例1 可以改写如下:

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

  嘿,这么简洁?!知道循环结构的便利之处了吧。例2 中 i 从 0 到 4,共执行了 5 次循环体。当然,也可以跟据个人的习惯,将例2 中的 for 语句改写为:

  for (i = 1; i <= 5; i++) {...}

  这样或许更容易理解,但我不推荐这样做,因为 C 语言中的数组下标是以 0 开始的,采用例1 中的 for 语句更容易在循环体中读写数组元素。就上例,如果我们要把所有成绩输入完成之后再逐一将其等级打印出来,就需要用到数组:

  /* 例3 */
  #include "grade.h"
  #include

  #define N 5

  void main() {
   int n[N], i;
   for (i = 0; i < N; i++) {
    printf("请输入成绩: ");
    scanf("%d", &n[i]);
   }
   for (i = 0; i < N; i++) {
    printf("第 %d 个成绩的等级为: %c", i, grade(n[i]));
   }
  }

  例3 中,如果 i 从 1 到 N 循环的话,读写数组元素时就应该使用 n[i - 1] 而不是 n[i]。那么每执行一次循环体就会多一次减法运算,在一个循环 N 次的循环中,就会多进行 N 次减法运算,大大降低了程序效率。

  C 语言是一种灵活的语言。它的 for 循环也不是一成不变,必须按照它的基础格式书写。暂时卖个关子,先看看从例3 修改过来的例4:

  /* 例4 */
  #include "grade.h"
  #include

  #define N 5

  void main() {
   int n[N], i = 0;
   for (; i < N; ) {
    printf("请输入成绩: ");
    scanf("%d", &n[i++]);
   }
   for (i = 0; ; i++) {
    if (i == N) {
     break;
    }
"实例讲解 - C 语言的循环结构"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/VC/2010-04-23/13760.html


关键字:

关于《实例讲解 - C 语言的循环结构》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td