2014-06-08 80 views
-1

在一個城鎮,男性的比例是52.總識字率是48.如果識字男性的總比例是總人口的35,找到文盲男女總人數分別爲8萬人。一個程序,不會顯示錯誤,但不會給出預期的結果

在我的數學書中有這樣一個問題,我試圖編寫一個程序。

編譯程序後,編譯器顯示沒有錯誤,但程序不會給出預期的結果。我重寫了這個程序很多次,下面給出的代碼是我的最後一個。我在想,一定有一些算術關聯錯誤,但不知道在哪裏。

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int men, wmen, litm, litwo, illit, lit, tot=80000, illitwmen; 
    men = (52/100) * 80000; 
    wmen = tot-men; 
    lit = (48/100) * 80000; 
    litm = (35/100) * 80000; 
    litwo = lit-litm; 
    illitwmen = wmen-litwo; 
    printf("Hence the total illiterate men of the town is %d\n", men-litm); 
    printf("Hence the total illiterate women is %d\n", illitwmen); 
    return 0; 
} 
+5

觀察整數除法,(52/100)== 0 – ThreeFx

+0

我用float而不是int,仍然沒有得到想要的結果。 – Ufomammut

+1

如果您沒有鍵入(52.0/100.0),仍爲整數除法 – ThreeFx

回答

3

爲了解決這個問題,只需使用double

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    double men,wmen,litm,litwo,illit,lit,tot=80000,illitwmen; 
    men=(52.0/100.0)*80000.0; 
    wmen=tot-men; 
    lit=(48.0/100.0)*80000.0; 
    litm=(35.0/100.0)*80000.0; 
    litwo=lit-litm; 
    illitwmen=wmen-litwo; 
    printf("Hence the total illiterate men of the town is %d\n",men-litm); 
    printf("Hence the total illiterate women is %d\n",illitwmen); 
    return 0; 
} 

編輯:我討厭手機接聽

1

使用,而不是(如果你想留在整數):

men=(52*80000)/100; 
wmen=tot-men; 
lit=(48*80000)/100; 
litm=(35*80000)/100; 

另外,您可能需要處理舍入。