这是我在这里发表的第一篇文章,所以请温柔地对待我。我最近在我的大学开了一个C编程课程,我真的很感兴趣。由于我正在处理音频(混音/母带音乐),我决定尝试制作一个简单的程序,用于计算用户定义的BPM(每分钟节拍数)的延迟时间(毫秒)。
我目前所困扰的是以下内容:我希望程序返回到开头并要求用户输入错误的BPM(在这种情况下为0)。
我尝试了 do while循环然而它没有正常工作,我的程序仍会计算所有内容,就好像用户只输入0一样,如果我键入了正确的值,它会只是无休止地循环。
如果我执行 if else语句,它会向用户发送消息,但我想提示用户再次输入消息。
我知道这是一个非常简单和基本的问题,但我们将非常感谢任何帮助。
到目前为止,这是我的代码:
int main(){
float BPM;
printf("Please input the BPM: ");
scanf(" %f", &BPM);
do{
float HZ = 1000;
float HZ_Result;
float BPM_QuarterNote=(60/BPM)*1000;
float BPM_WholeNote=BPM_QuarterNote*4;
printf("\n\nDelay time for whole note is: %.2f ms or %.2f Hz", BPM_WholeNote, 1000/BPM_WholeNote);
float BPM_HalfNote=BPM_QuarterNote*2.0;
printf("\n\nDelay time for 1/2 note is: %.2f ms or %.2f Hz", BPM_HalfNote, 1000/BPM_HalfNote);
printf("\n\nDelay time for 1/4 note is: %.2f ms or %.2f Hz", BPM_QuarterNote, 1000/BPM_QuarterNote);
float BPM_EightNote=BPM_QuarterNote*0.5;
printf("\n\nDelay time for 1/8 note is: %.2f ms or %.2f Hz", BPM_EightNote, 1000/BPM_EightNote);
float BPM_SixteenthNote=BPM_QuarterNote*0.25;
printf("\n\nDelay time for 1/16 note is: %.2f ms or %.2f Hz", BPM_SixteenthNote, 1000/BPM_SixteenthNote);
float BPM_32ndNote=BPM_QuarterNote*0.125;
printf("\n\nDelay time for 1/32 note is: %.2f ms or %.2f Hz", BPM_32ndNote, 1000/BPM_32ndNote);
}while(BPM > 0);
return 0;
}
答案 0 :(得分:1)
您可以使用while循环而不是if来测试您的条件
例如
/* while loop execution */
while( BPM == 0 ) {
/* get my input values */
}
答案 1 :(得分:0)
仅在用户满意时才退出的用户输入循环的简单示例:
int main(void)
{
float fNum= 5.2;
double dpNum= 5.2;
long double ldFloat;
char quit[]={" "};
while(quit[0] != 'q')
{
printf("\n\nEnter a float number: ");
scanf("%f", &fNum);
printf("Enter a double precision number: ");
scanf("%Lf", &ldFloat);
... other stuff as needed
printf("Enter any key to continue or 'q' to exit.");
scanf("%s", quit);
}
return 0;
}
答案 2 :(得分:0)
在BPM声明下方添加此代码。
do{
printf("Please input the BPM: ");
scanf(" %f", &BPM);
}while(BPM==0.00);
答案 3 :(得分:0)
do {
printf("Please input the BPM: ");
} while (scanf("%f", &bpm) == 0 || bpm < 0);
此循环打印问题,直到用户输入有效的浮点数并且该数字至少为0.