在家庭作业中的无限循环

时间:2016-03-20 22:40:03

标签: c

这是一个家庭作业问题,应该打印"冲洗和重复" n次循环的洗发水说明,如果n超出0-4的范围,则出现错误。

问题: 我发现我做了一个无限循环,但我没想到我做过。我很困惑如何通过一些测试来完成所有这些。

#include <stdio.h>

/* Your solution goes here */
void PrintShampooInstructions(int numCycles) {
    int N = 1.0;
    while ((numCycles > 1 ) && (numCycles < 4)) {
        printf ("%d:Lather and rinse.\n", N);
        ++N;
    }
    if (numCycles < 1) {
        printf ("Too few.\n");
        return;
    } else
    if (numCycles > 4) {
        printf ("Too many.\n");
        return;
    } else {
        printf ("Done.\n");
        return;
    }
}

int main(void) {
    PrintShampooInstructions(2);
    return;
}

2 个答案:

答案 0 :(得分:1)

您的循环条件是常量,因此循环不会被执行或者它会一直执行。更改为使用循环的代码是可接受的循环数:

#include <stdio.h>

void PrintShampooInstructions(int numCycles) {
    if (numCycles < 1) {
        printf("Too few.\n");
        return;
    } else
    if (numCycles > 4) {
        printf("Too many.\n");
        return;
    } else {
        int N = 1;
        while (N <= numCycles) {
            printf("%d: Lather and rinse.\n", N);
            ++N;
        }
        printf("Done.\n");
        return;
    }
}

int main(void) {
    PrintShampooInstructions(2);
    return 0;
}

答案 1 :(得分:1)

这个代码片段做了什么?

int N = 1.0;
while ((numCycles > 1 ) && (numCycles < 4))
{
  printf ("%d:Lather and rinse.\n", N);
  ++N;
}

它使得括号内的东西成为{},直到条件变为false。但条件中的价值永远不会改变......