在for循环中使用while循环是否被视为嵌套的while循环?

时间:2019-05-31 04:38:34

标签: c loops while-loop nested

是否可以将for循环中的while循环视为嵌套的while循环?
如何使用do while来解决相同的问题?

#include <stdio.h>

#define NUMS 3

int main() {
    // insert code here...
    int highVal;
    int lowVal;
    int i;
    printf("---=== IPC Temperature Analyzer ===---\n");

    for (i=1;i<=NUMS;i++){
        printf("Enter the high value for day %d: ",i);
        scanf("%d",&highVal);
        printf("Enter the low value for day %d: ",i);
        scanf("%d",&lowVal);

        while((highVal < lowVal)||(highVal >= 41 || lowVal <= -41)){

            printf("Incorrect values,temperature must be in the range -40 to 40,high must be greater than low\n");
            i--;
            highVal=1;
            lowVal=0;
        }
    }

    return 0;
}

我正在获得所需的结果,但是分配要求使用嵌套的while循环(或do while)以及for循环来提示用户。

2 个答案:

答案 0 :(得分:0)

do {
 printf("Enter the high value for day %d: ",i);
        scanf("%d",&highVal);
        printf("Enter the low value for day %d: ",i);
        scanf("%d",&lowVal);

        if((highVal < lowVal)||(highVal >= 41 || lowVal <= -41)){

            printf("Incorrect values,temperature must be in the range -40 to 40,high must be greater than low\n");
            i--;
            highVal=1;
            lowVal=0;
        }
    }while (i<=NUM)

答案 1 :(得分:-1)

  

在for循环中使用while循环可以视为嵌套的while循环吗?

不,这只是一个嵌套循环,就像是一个嵌套循环一样:

foo:
    z = baz();
    x++;
bar:
    y++;
    if(x < 100) goto bar;
    if(y < 100) goto foo;

请注意,您可以通过将片段分开来将for()转换为while。例如,这:

    for (i=initial; i<=MAX; i++) {
        do_something();
    }

..等效于此:

    i=initial;
    while (i<=MAX) {
        do_something();
        i++;
    }

以类似的方式,您可以轻松地将while()转换为ifgoto(因此可以将for()转换为if和{{1} })。例如,先前的gotofor()示例与此等效:

while()