这个函数的作用就是把一个百分制成绩转换成等级制。转换的过程我已经在讲解分支结构的时候详细阐述了......
作者:边城狂人 来源:yesky 2007年10月30日
关键字: Linux
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;
}
printf("第 %d 个成绩的等级为: %c", i, grade(n[i]));
}
}
是不是很奇怪,例4 中的两个 for 循环中与上面两个例子的 for 循环相比,都少用了一些语句,怎么回事?且听我慢慢道来:
第一个 for 循环中,少了 i = 0 和 i++ 两句。其实仔细一看,这两句也没少。i = 0 已经在给 i 赋初值的时候就实现了,而 i++ 是在 scnaf 语句中顺便实现的。所以,虽然没有 i = 0 一句,但循环开始之前 i 的值已经是 0 了;虽然没有 i++ 一句,但循环体中实际也改变了 i 的值。
第二个 for 循环中少的只是那一句判断。而正是由于少了这一句判断,for 循环便不能自已结束。如果我在循环体中也不采取措施结束循环的话,这个循环将一直不停的执行下去,形成死循环。于是,我在循环体中对 i 进行判断,当它等于 N的时候执行一个 break 语句,跳出循环,填补了 for 语句中没有逻辑表达式的缺陷。
甚至,一个 for 语句就可以写成 for (; ; ) {...},这样一个 for 语句,简单的说,就是一个死循环。
还有一点需要说明,就是 break 语句。这个语句在讲解 switch 分支结构的时候就已经见到过了。它除了能用于 switch 分枝结构之外,还能用于所有的三种循环结构。其作用就是两个字--"跳出"。switch 分枝结构中,它用于跳出整个 switch 语句;而在循环结构中,它自然是用于跳出循环,执行它之后,循环体中所有其它语句都不会再执行,整个循环就此中断。