C

C 知识量:16 - 74 - 317

6.1 while循环><

C控制语句- 6.1.1 -

对于计算机科学而言,一门语言应该提供以下3种形式的程序流:

  • 执行语句序列。

  • 如果满足某些条件就重复执行语句序列,即循环。

  • 通过测试选择执行哪一个语句序列,即分支或称条件判断。

C语言对于以上形式的程序流都提供了很好的支持,while循环就是用于重复执行语句序列。除此之外,还可以使用C语言的for和do while循环。

while循环示例- 6.1.2 -

先来初步了解一下while循环,以下是一个简单的示例:

#include <stdio.h>

int main(void) {
    long number;
    long sum = 0L;
    int status;
    
    printf("Please enter an integer to summed(q to quit):");
    status = scanf("%ld", &number);
    while (status == 1) {
        sum = sum + number;
        printf("Please enter next integer to summed(q to quit):");
        status = scanf("%ld", &number);
    }
    printf("The integers sum to %ld.\n", sum);
    system("pause");
    return 0;
}

输入56、88、74、365、q之后的结果为:

Please enter an integer to summed(q to quit):56
Please enter next integer to summed(q to quit):88
Please enter next integer to summed(q to quit):74
Please enter next integer to summed(q to quit):365
Please enter next integer to summed(q to quit):q
The integers sum to 583.

以上while循环代码中,变量status用于循环条件的判断,当status的值等于1时,就会进行一轮循环,即执行循环体(花括号括起来的语句)。

这里利用了scanf()函数的返回值特性,scanf()函数返回成功读取项的数量。如果读取成功一个整数,就会把该数存入变量number并返回1;如果读取失败,就会返回0;如果读取出了其他问题没有成功(例如:遇到文件结尾或硬件问题),就会返回EOF(其通常会被定义为-1)。以上情况正好可以控制循环体的执行。

C风格读取循环- 6.1.3 -

可以利用C代码风格将循环示例代码进一步精简,修改后的代码如下:

#include <stdio.h>

int main(void) {
    long number;
    long sum = 0L;

    printf("Please enter an integer to summed(q to quit):");
    while (scanf("%ld", &number) == 1) {
        sum = sum + number;
        printf("Please enter next integer to summed(q to quit):");
    }
    printf("The integers sum to %ld.\n", sum);
    system("pause");
    return 0;
}

以上代码中,省略了用于判断的变量status,将scanf()函数放入了while循环判断条件中,由于每循环一次,就会对循环条件执行一次判断,也就会执行一次scanf()函数,因此,以上代码是完全可行的,而且更加精简。