所以我试着编写一个程序来计算一组数字中其中一个数字的百分比。我可以输入数字,但百分比总是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);
}
答案 0 :(得分:5)
将声明部分更改为
int i;
float sum,perc;
sum=0;
这是因为c中的类型转换。 图中的左侧部分显示结果变量为整数时的结果,右侧显示结果变量为float时的结果。
答案 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);