一个程序,它不会显示错误,但不会产生预期的结果

时间:2014-06-08 18:28:20

标签: c

在一个城镇,男性的比例是52.识字总人数的百分比是48.如果识字男性的总百分比是总人口的35,那么分别找到文盲男女总人数。是80,000。

我的数学书中有这个问题,我试着写一个程序。

构建程序后,编译器显示没有错误,但程序不会给出所需的结果。我多次重写程序,下面给出的代码是我的最后一个。我认为必定存在一些算术关联错误,但无法弄清楚在哪里。

#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;
}

2 个答案:

答案 0 :(得分: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 :(得分:1)

改为使用(如果你想保持整数):

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

此外,您可能需要处理四舍五入。