首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使C程序返回开始,如果用户没有输入正确的值,则再次请求输入

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

Stack Overflow用户
提问于 2016-03-23 21:47:02
回答 4查看 2.5K关注 0票数 0

这是我的第一篇帖子,所以请对我温柔一点。我最近在我的大学开设了一个C编程课程,我对它非常感兴趣。由于我正在处理音频(混合/掌握音乐),我决定尝试制作一个简单的程序,为用户定义的BPM (每分钟Beats)计算以ms为单位的延迟时间。

我目前坚持的是:我希望程序返回开始,并要求用户再次输入,如果他输入错误的BPM (在本例中为0)。

我尝试了一个do循环,但是它工作得不太好,我的程序仍然会计算所有东西,就像用户刚刚输入0一样,如果我输入了一个正确的值,它就会不停地循环。

如果我做了一个if 语句,它会给用户一条消息,但是我想再次提示用户输入和消息。

我知道这是一个非常简单和基本的问题,但任何帮助都将不胜感激。

到目前为止,我的代码如下:

代码语言:javascript
复制
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;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-23 21:56:49

在BPM声明下面添加此代码。

代码语言:javascript
复制
do{
    printf("Please input the BPM:   ");
    scanf(" %f", &BPM);
  }while(BPM==0.00);
票数 0
EN

Stack Overflow用户

发布于 2016-03-23 21:53:59

您可以使用while循环而不是if来测试您的状态。

例如

代码语言:javascript
复制
/* while loop execution */
while( BPM == 0 ) {
/* get my input values */
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-23 21:55:51

一个用户输入循环的简单示例,该循环仅在用户满意时退出:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36189305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档