到目前为止,该程序扫过 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/