头发 发表于 2020-11-18 16:17:07

请问这个错误是啥意思?

#include<stdio.h>
#define N 3 //number of people
typedef struct
{
        int id;
        float s;//chinese math english
}stu;
int av1(float grade,float sum)
{
        int i,j=0;
        for(i=0;i<N;i++)
        {
                if((sum/3)<=60)
                {
                        j++;
                }
        }
        return j+1;
}
int main()
{
        stu s;
        int i,j,fail;
        float sum;
        for(i=0;i<N;i++)
        {
                scanf("%d",&s.id);
      scanf("%f",&s.s);
      scanf("%f",&s.s);
      scanf("%f",&s.s);
        }
        for(i=0;i<N;i++)
       for(j=0;j<3;j++)
       {
               sum=s.s;
       }
        fail=av1(s.s,sum); // cannot convert 'float' to 'float*' for argument '2' to 'int av1(float*, float*)
        printf("number of failures:%d",fail);
        return 0;
}

错误在倒数第三行,啥意思 怎么改才对? 求助

a327190489 发表于 2020-11-18 16:30:45

#include<stdio.h>
#define N 3 //number of people
typedef struct
{
      int id;
      float s;//chinese math english
}stu;
int av1(float grade,float sum)
{
      int i,j=0;
      for(i=0;i<N;i++)
      {
                if((sum/3)<=60)
                {
                        j++;
                }
      }
      return j;
}
int main()
{
      stu s;
      int i,j,fail;
      float sum={0,0,0};
      for(i=0;i<N;i++)
      {
                scanf("%d",&s.id);
      scanf("%f",&s.s);
      scanf("%f",&s.s);
      scanf("%f",&s.s);
      }
      for(i=0;i<N;i++)
         for(j=0;j<3;j++)
         {
               sum+=s.s;
         }
      fail=av1(s.s,sum); // cannot convert 'float' to 'float*' for argument '2' to 'int av1(float*, float*)
      printf("number of failures:%d\n",fail);
      return 0;
}

a327190489 发表于 2020-11-18 16:31:28

我看你其他细节好像也有错误,我就给你改了一下,你复制我的看一下吧

a327190489 发表于 2020-11-18 16:33:33

倒数第三行第二个参数传的是数组名,你把元素传过去了

头发 发表于 2020-11-18 16:33:58

a327190489 发表于 2020-11-18 16:30


返回j+1为啥不行

a327190489 发表于 2020-11-18 16:41:48

你应该是返回平均成绩小于60的人数吧,按你这样的话,三个人的平均成绩都大于60还是会返回一个人,因为j初始值为0,没人挂科你还返回j+1

头发 发表于 2020-11-18 16:44:22

a327190489 发表于 2020-11-18 16:41
你应该是返回平均成绩小于60的人数吧,按你这样的话,三个人的平均成绩都大于60还是会返回一个人,因为j初 ...

所以错误是因为sum未初始化吗

a327190489 发表于 2020-11-18 16:48:41

错误是参数类型不对吧,人家必须得传函数名,你传的是具体的元素,你看一下你的倒数第三行和我的倒数 第三行那个第二个参数,我给你sum初始化是因为你最后的for循环里面写错了,是求和,求和你那个变量就得有个初值等于零(这是你的其他问题)。你所问的问题就是函数参数写的不对,对照一下倒数第三行吧
页: [1]
查看完整版本: 请问这个错误是啥意思?