2011-03-05 63 views
1

問題: 爲模擬警察雷達槍的程序創建算法。該算法應讀取汽車速度(單位km/h),如果速度超過59kmh,則輸出消息「超速」。然後,該算法還應計算適當的罰款,在極限以上1-10kmh爲80美元,在極限以上11-30kmh爲150美元,在極限以上31kmh以上爲500美元。使用下面的空間。幫助:如何根據要求編寫這個簡單的代碼?

我的解決方案:

#include <stdio.h> 
int main() 
{ 
    int speed = 0; 
    int limit = 59; 

    /*Get automobile speed from user*/ 
    printf("Please enter the speed: "); 
    scanf("%d%*c", &speed); 
    /* Based on the speed, generates the corresponding fine*/ 
    if (speed > limit) 
     { 
     printf("Speeding"); 
     if((speed - limit) <= 10) 
      printf("Fine: $80"); 
     else 
      if((speed - limit) >= 11 & (speed - limit) <= 30) 
       printf("Fine: $150"); 
      else 
       if((speed - limit) >= 31) 
        printf("Fine: $500"); 
     } 
    else 
     printf("The automobile is not speeding"); 
    return (0); 
} 

這裏的問題是,它不會打印出消息,「超速」。 任何人都可以幫我一把嗎?

+0

不要忘了把新行「\ n」 printf中 – fazo 2011-03-05 11:24:32

+0

是。有用。我想知道這背後的原因。任何意見? – Jervis 2011-03-05 11:29:56

+1

您在這裏使用了錯誤的運算符:'(速度限制)> = 11&(速度限制)<= 30)'這應該是一個邏輯AND('&&')。 – 2011-03-05 11:45:39

回答

2

printf在寫入標準輸出時被緩衝。後您的printf功能使用fflush(stdout),或添加新的線,即printf("Speeding\n");

您還可以在標準輸出流通過使用setbuf(stdout, NULL);禁用緩衝

+0

非常感謝。你能告訴我爲什麼printf緩衝? – Jervis 2011-03-05 11:27:38

+0

如果沒有緩衝,如果printf被大量使用,它可能會減慢程序的執行速度,因爲它很可能寫入需要屏幕更新的可見控制檯,並且速度很慢。通過緩衝,它可以以「更大」的塊寫入流。 – Milan 2011-03-05 11:35:19