使用数组计算数字的百分比

时间:2013-09-06 11:12:56

标签: c arrays

所以我试着编写一个程序来计算一组数字中其中一个数字的百分比。我可以输入数字,但百分比总是0,我在纸上试用了公式,每次都可以使用sooo idk似乎是什么问题。

#include <stdio.h>

int main() {
    int x[10];
    int i,sum;
    float perc;
    sum=0;

    for(i = 0; i < 10; ++i) {
        scanf("%d",&x[i]);
        sum=sum+x[i];
    }

    printf("n            percentage of total\n");

    for(i = 0; i < 10; ++i) {
        perc=(x[i]/sum)*100;
        printf("%d          %.2f\n",x[i],perc);
    }
    return (0);
}

3 个答案:

答案 0 :(得分:5)

将声明部分更改为

   int i;
   float sum,perc;
   sum=0;

这是因为c中的类型转换。 图中的左侧部分显示结果变量为整数时的结果,右侧显示结果变量为float时的结果。

enter image description here

答案 1 :(得分:2)

此表达式

  

PERC =(X [I] /总和)×100;

执行整数除法。整数除法不返回小数部分。

如果(x[i] >= 0)(x[i] < sum),则(x[i]/sum)为零。 (100 * 0)也为零。

无论是FIRST乘以100还是THEN除(不会以这种方式得到百分比的小数部分):

perc=(x[i]*100/sum);

或者将参数转换为浮点数:

perc=((float)x[i]*100.0/(float)sum);

perc = x[i] * 100.0f / sum;

答案 2 :(得分:0)

您获得的结果为零,因为将int分开将始终生成int。如果分母大于分子,那么它将给出0 利用typecasting,更改

perc=(x[i]/sum)*100;

perc= ((float)x[i]/sum)*100; //Typecasting 

您也可以将100更改为100.0

来执行此操作
perc= (x[i]*100.0/sum);