这是什么错误?
#include<stdio.h>#define N 3 //number of people
typedef struct
{
int id;
float s;//chinese math english
}stu;
int av1(int id[],float sum[],int f[])
{
int i,j=0;
for(i=0;i<N;i++)
{
if((sum/3)<60)
{
j++;
f=id;
}
}
return j;
int main()
{
stu s;
int i,j,fail,f[];//f[]为不及格名单
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.id,sum,f);
printf("number of failures:%d",fail);
for(i=0;i<fail;i++)
printf("List of failures:%d",f);
return 0;
}
我想把不及格的id存到f[]数组中再输出;
可f定义的时候为啥说长度未知,不是可以忽略行吗? 忽略行是指数组作为形参的时候吧 a327190489 发表于 2020-11-18 22:54
忽略行是指数组作为形参的时候吧
没想明白咋改才对。。{:5_100:} 你从昨晚到现在已经发了好多个关于数组的帖子了。
感觉你对数组完全不了解啊。还是再认真学习一下数组吧。
#include<stdio.h>
#define N 3 //number of people
typedef struct
{
int id;
float s;//chinese math english
}stu;
int av1(stu s[],float sum[],int f[])//第一个参数应该是结构体,不应该是int
{
int i,j=0;
for(i=0;i<N;i++)
{
if((sum/3)<60)
{
//j++;//这一行应该去掉,j不能加两次
f=s.id;
}
}
return j;
}
int main()
{
stu s;
int i,j,fail,f;//定义的时候不进行初始化,那就必须制定数字大小,否则无法分配空间
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,sum,f);//第一个参数一个是stu结构体,不应该是id,你的id也不是一个数组啊。。。。
printf("number of failures:%d\n",fail);
for(i=0;i<fail;i++)
printf("List of failures:%d\n",f);
return 0;
} sunrise085 发表于 2020-11-19 10:23
你从昨晚到现在已经发了好多个关于数组的帖子了。
感觉你对数组完全不了解啊。还是再认真学习一下数组吧。 ...
感谢 函数+结构体 语法这块我迷{:5_100:}
页:
[1]