|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#define N 3 //number of people
typedef struct
{
int id;
float s[3];//chinese math english
}stu;
int av1(int id[],float sum[],int f[])
{
int i,j=0;
for(i=0;i<N;i++)
{
if((sum[i]/3)<60)
{
j++;
f[j++]=id[i];
}
}
return j;
int main()
{
stu s[N];
int i,j,fail,f[];//f[]为不及格名单
float sum[N];
for(i=0;i<N;i++)
{
scanf("%d",&s[i].id);
scanf("%f",&s[i].s[0]);
scanf("%f",&s[i].s[1]);
scanf("%f",&s[i].s[2]);
}
for(i=0;i<N;i++)
for(j=0;j<3;j++)
{
sum[i]+=s[i].s[j];
}
fail=av1(s[N].id,sum,f);
printf("number of failures:%d",fail);
for(i=0;i<fail;i++)
printf("List of failures:%d",f[i]);
return 0;
}
我想把不及格的id存到f[]数组中再输出;
可f定义的时候为啥说长度未知,不是可以忽略行吗?
你从昨晚到现在已经发了好多个关于数组的帖子了。
感觉你对数组完全不了解啊。还是再认真学习一下数组吧。
- #include<stdio.h>
- #define N 3 //number of people
- typedef struct
- {
- int id;
- float s[3];//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[i]/3)<60)
- {
- //j++;//这一行应该去掉,j不能加两次
- f[j++]=s[i].id;
- }
- }
- return j;
- }
- int main()
- {
- stu s[N];
- int i,j,fail,f[N];//定义的时候不进行初始化,那就必须制定数字大小,否则无法分配空间
- float sum[N]={0.0};//要初始化为0,否则后面直接自加可能会出错。
- for(i=0;i<N;i++)
- {
- scanf("%d",&s[i].id);
- scanf("%f",&s[i].s[0]);
- scanf("%f",&s[i].s[1]);
- scanf("%f",&s[i].s[2]);
- }
- for(i=0;i<N;i++)
- for(j=0;j<3;j++)
- {
- sum[i]+=s[i].s[j];
- }
- 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[i]);
- return 0;
- }
复制代码
|
|