如果用户没有输入正确的值,则使C程序返回到开始并再次请求输入

时间:2016-03-23 21:47:02

标签: c loops while-loop do-while

这是我在这里发表的第一篇文章,所以请温柔地对待我。我最近在我的大学开了一个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;
}

4 个答案:

答案 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.