c++输入10个学生的学号、姓名和成绩,计算并输出他们的平均成绩,并且将低于平均分学生的学号、姓名和成绩

要求:建立学生的结构记录,包括学号、姓名和成绩,最好原创,谢谢

#include <stdio.h>

typedef struct student
{
char name[20];
char num[10];
float value;
}STUDENT;

float ave(STUDENT *stu)
{
int i;
float sum = 0.0;

for (i = 0; i < 0; ++i)
sum+=stu[i].value;
return sum/10;
}

void Find(STUDENT *stu, float ave)
{
int i;

for (i = 0; i < 10; ++i)
if (ave > stu[i].value)
printf("姓名:%s 学号:%s 成绩:%.2f\n", stu[i].name, stu[i].num, stu[i].value);
}

int main(void)
{
STUDENT stu[10];
int i;
float _ave = 0.0;

for (i = 0; i < 10; ++i)
{
printf("输入第%d个学生信息(姓名,学号,成绩):", i+1);
scanf(" %s %s %f", stu[i].name, stu[i].num, &stu[i].value);
}
_ave = ave(stu);
printf("平均成绩:%.2f\n", _ave);
Find(stu, _ave);
return 0;
}追问

输出平均成绩是0.、、、、

追答

for (i = 0; i < 0; ++i)写错了 for (i = 0; i < 10; ++i)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-07
/*自己写的,运行过了,没问题。如果觉得不错的话,记得给我加分啊!嘻嘻~~~*/
#include<iostream>
using namespace std;
struct student //创建student类
{
char name[20]; //姓名,学号,成绩
char num[10];
float mark;
};
void Average (student *stu)
{
int i;
float sum = 0.0;
float average;
for (i = 0; i < 10; i++)
{
cin>>stu[i].name>>stu[i].num>>stu[i].mark;
}
cout<<"成绩低于平均分的同学都有:"<<endl;
cout<<"姓名"<<'\t'<<"学号"<<'\t'<<"成绩"<<'\t'<<endl;
for (i = 0; i < 10; i++)
{
sum+=stu[i].mark; //计算所有学生成绩的总和
}
average=sum/10; //算出平均分

for (i = 0; i < 10; i++)
{
if (stu[i].mark < average )
cout << stu[i].name << '\t'<< stu[i].num <<'\t' <<stu[i].mark<<endl;
}
}
int main()
{
student stu[10];
cout<<"请输入学生的姓名,学号以及成绩"<<endl;
Average(stu);//调用函数
return 0;
}