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

标签 c while-loop do-while

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

现在我要做的是修改它,当它达到 2000 Hz 时,程序不会停止,而是给用户一个选项,比如“你想再次启动这个程序吗?”,如果用户键入“Y”,程序将重新开始,但如果用户键入“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);
}

最佳答案

你的概念是正确的,但你只是错过了 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);
}

关于c - 在 C 编程中制作一个 Do-While 循环来询问用户是否希望程序再次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091739/

相关文章:

C++ getline inside while loop 缺少第一个字母。没有 cin.ignore 不工作?

javascript - 在 JavaScript 中执行 While 循环

c - 查找哪种颜色最接近 C 中给定的 RGB 值

c - 在c套接字程序中定义结构

c - 将十六进制数打印为十进制

c - 终端中带有 C 的文本文件

C++ For 循环在过程中被跳过。如何修复它?

java - 如何用do-while循环来陷阱用户?

c - 验证输入并清除键盘缓冲区

c - 在 C 中使用 qSort 排序的数组字符串