這是我第一篇文章,所以請對我溫柔。我最近在我的大學開設了一門C語言課程,對此我非常感興趣。由於我正在處理音頻(混音/母帶音樂),我決定嘗試製作一個簡單的程序,以計算用戶定義的BPM(每分鐘節拍)的延遲時間(毫秒)。如果用戶沒有輸入正確的值,使C程序返回到開始並要求再次輸入
我現在堅持的是以下內容:我想要程序返回到開始並要求用戶再次輸入,如果他輸入了錯誤的BPM(在這種情況下爲0)。
我試過一個做while while循環然而它沒有正常工作,我的程序仍然會計算一切,就好像用戶剛輸入0一樣,如果我輸入了正確的值,它會循環不止。
如果我做了如果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;
}
請出示你的企圖循環。 – kaylum
請同時檢查'scanf'的返回值以及掃描的輸入值。如果'scanf'不返回'1',那麼您正在測試* unintialised變量*'BPM'。 –
這聽起來像你想循環用戶輸入部分 - 第一個'printf()'和'scanf()'。 –