在C编程中,创建一个Do-While循环来询问用户是否希望程序再次运行

时间:2017-03-29 11:04:20

标签: c while-loop do-while

此程序到目前为止扫描频率范围0-20000 Hz并在屏幕上每50 Hz打印一次,然后在达到20000 Hz时停止。如果我在屏幕midi键盘上移动控件,它也会停止。

现在我要做的就是修改它,以便当它达到2000赫兹而不是停止时,程序会给用户一个选项,例如"你想要开始这个吗?再次编程?",如果用户键入' Y'然后它会重新开始,但如果用户键入' N' N' N' N'该计划将停止。我相信do while是我正在寻找的,但我已经尝试过,而且似乎无法让它发挥作用。

我的代码:

#include "aservelibs/aservelib.h"
#include <stdio.h>
#include <math.h>

int main()
{
    int frequency = 0.0;
    int modulation = aserveGetControl(1);

    printf("aserve get note control is %d\n", modulation);

    do
    {
        while( frequency < 20000.0 && modulation == 0)
        {
            modulation = aserveGetControl(1);
            aserveOscillator(0,frequency,1.0,0);
            printf("The frequency is: %dHz\n", frequency);
            frequency = frequency + 50.0;
            aserveSleep(20);
        }

        char userInput;
        printf("enter 'y' if you would like to repeat: ");
        scanf(" %c", &userInput);
        while(userInput == 'y');
    }

    return(0);
}

2 个答案:

答案 0 :(得分:4)

您的概念是正确的,但您错过了do while循环的语法。

应该是

do {

} while(condition);

因此,修改后的代码将是

#include "aservelibs/aservelib.h"
#include <stdio.h>
#include <math.h>

int main()
{
    int frequency = 0.0;
    int modulation = aserveGetControl(1);
    printf("aserve get note control is %d\n", modulation);
    char userInput;

    do
    {
        while( frequency < 20000.0 && modulation == 0)
        {
            modulation = aserveGetControl(1);
            aserveOscillator(0,frequency,1.0,0);
            printf("The frequency is: %dHz\n", frequency);
            frequency = frequency + 50.0;
            aserveSleep(20);
        }

        printf("enter 'y' if you would like to repeat:  ");
        scanf(" %c", &userInput);
    } while(userInput == 'y');

    return(0);
}

答案 1 :(得分:3)

首先,您遇到语法错误:while子句必须放在循环体之外:

do
{
}
while(someCondition); // here!

在循环体内定义的变量在其外部无法访问 - 因此您需要在之前声明它们:

char userInput;
do
{
}
while(userInput == 'y');

除此之外,您的代码应该可以正常工作。

相关问题