这是我的第一篇帖子,所以请对我温柔一点。我最近在我的大学开设了一个C编程课程,我对它非常感兴趣。由于我正在处理音频(混合/掌握音乐),我决定尝试制作一个简单的程序,为用户定义的BPM (每分钟Beats)计算以ms为单位的延迟时间。
我目前坚持的是:我希望程序返回开始,并要求用户再次输入,如果他输入错误的BPM (在本例中为0)。
我尝试了一个do循环,但是它工作得不太好,我的程序仍然会计算所有东西,就像用户刚刚输入0一样,如果我输入了一个正确的值,它就会不停地循环。
如果我做了一个if 语句,它会给用户一条消息,但是我想再次提示用户输入和消息。
我知道这是一个非常简单和基本的问题,但任何帮助都将不胜感激。
到目前为止,我的代码如下:
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;
}发布于 2016-03-23 21:56:49
在BPM声明下面添加此代码。
do{
printf("Please input the BPM: ");
scanf(" %f", &BPM);
}while(BPM==0.00);发布于 2016-03-23 21:53:59
您可以使用while循环而不是if来测试您的状态。
例如
/* while loop execution */
while( BPM == 0 ) {
/* get my input values */
}发布于 2016-03-23 21:55:51
一个用户输入循环的简单示例,该循环仅在用户满意时退出:
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;
}https://stackoverflow.com/questions/36189305
复制相似问题