使用二维数组和循环在c ++中未显示的百分比

时间:2014-09-29 11:18:43

标签: c arrays

这是我的代码,请帮帮我,百分比显示0.00而不是我想要的。

我想计算百分比,正如您将通过以下代码知道这一点......

#include<stdio.h>
#include<conio.h>

int main()
{
int marks[2][3]={80,70,50,90,50,60};
int total[2]={0,0};
float per[2]={0.0f,0.0f};

for (int x=0;x<2;x++)
{
for(int y=0;y<3;y++)
{
printf("[%d][%d]=%d\t",x,y,marks[x][y]);
total[x]=total[x]+marks[x][y];
per[x]=total[x]/300*100;
}

printf("total [%d]=%d",x,total[x]);
printf("\n\npercentage [%d]=%2.2f \n",x,per[x]);
putchar('\n');
}

getch();
return 0;

}

2 个答案:

答案 0 :(得分:5)

在表达式

total[x]/300*100

所有涉及的值都是整数,因此在分配给浮点数组条目之前会截断结果。

改为例如

total[x]/300.0f*100.0f

答案 1 :(得分:2)

per[x]=total[x]/300*100;替换为per[x]=total[x] * 1.0f / 300 * 100;

你需要在除法之前将int转换为double / float,以确保不会因为截断整数除法而失去精度。

per[x]=total[x]/300*100;  /* Assuming total[x] = 280 */
per[x]=280/300*100;
per[x]=(280/300)*100;  /* Associativity is left-to-right */
per[x]=0*100;
per[x]=0;

您可能还想阅读integer division in Coperator associativity