float variable-c中的错误

0 c variables floating-point

朋友,我是一名计算机科学专业的学生,​​我的讲师给了我一个编写程序的任务,将20个数字输入数组并计算标记的总数和平均值.所以我写了上面的代码作为答案.当我检查答案时输入平均值有一个小错误.如果正确的平均值是48.59,程序给出的平均值为48.00.i试图解决问题而我无法做到这一点.有人帮我吗?

我正在使用CODEBLOCKs来编写程序.

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

int main()
{
   int grades[20];
   int a,b,c,d,tot=0,high=0;
   float avg=0;
   for(a=0;a<20;a++)
    {
        printf("Input the Mark : ");
        scanf("%d",&d);

        if(d>=0&&d<=100)
            grades[a]=d;
        else
    {
            printf("OUT OF RANGE.PLEASE INPUT A VALID NUMBER.\n");
            a--;
    }
}
for(b=0;b<20;b++)
{
    tot=tot+grades[b];
}

avg=tot/20;

high=grades[0];
for(c=0;c<20;c++)
{
    if(high<grades[c])
        high=grades[c];
}
printf("The Total Value is : %d\nThe Average is : %.02f\nHighest Value is : %d",tot,avg,high);
Run Code Online (Sandbox Code Playgroud)

}

NPE*_*NPE 7

以下使用整数除法(即使您将结果存储在浮点变量中):

avg=tot/20;
Run Code Online (Sandbox Code Playgroud)

要强制进行浮点除法,请使用:

avg=tot/20.0;
Run Code Online (Sandbox Code Playgroud)

  • 或者如果你有一个变量int x(例如,对于一个变量输入),使用avg = tot /(float)x; (2认同)