有8个学生的数组存放于结构数组a中,每个学生记录由学号num和成绩score组成,编写程序,使其实现:
(1)自定义函数1,用来输入8个学生的信息,该函数在main中调用
(2)自定义函数2,用于统计所有学生的平均成绩aver,并将值返回main中
(3)自定义函数3,用于打印成绩大于等于平均值的学生记录
(4)main中调用以上3个函数
同学你好,可以参考我以往的答案,同样的题目:
初学者,实在不会,各位大lao这个该怎么做啊-编程语言-CSDN问答
#include <stdio.h>
#define N 8//8个学生
struct stu{
char num[100];//学号
float score;//成绩
};
int info(struct stu s[]){//录入学生信息
int i;
for (i=0;i<N;i++){
printf("请输入第%d个学生的学号:\n",i+1);
scanf("%s",&s[i].num);
printf("请输入第%d个学生的成绩:\n",i+1);
scanf("%f",&s[i].score);
}
return 0;
}
float average(struct stu s[]){//求平均
int i;
float ave;
ave = 0;
for (i=0;i<N;i++) ave+=s[i].score;//相加
return ave/N;//返回平均
}
int print(struct stu s[], float ave){//打印
int i;
printf("学号\t成绩(大于平均)\n");
for (i=0;i<N;i++){
if(s[i].score>ave)
{
printf("%s\t%.2f\n",s[i].num,s[i].score);
}
}
return 0;
}
int main(){
float ave;
struct stu s[N];
info(s);//录入信息
ave = average(s);//求平均
printf("平均分=%.2f\n",ave);
print(s,ave);//打印
}
N=2的效果
哪一部分你不熟练啊
typedef struct _student{
int num;
float score;
}student;
student a[8];
void fun1()
{
for(int i=0;i<8;i++)
scanf("%d%f",&a[i].num,&a[i].score);
}
float fun2()
{
float sum = 0;
for(int i=0;i<8;i+++)
sum += a[i].score;
return sum/8;
}
void fun3(float avg)
{
for(int i=0;i<8;i++)
{
if(a[i].score >= avg)
{
printf("%d %f\n",a[i].num,a[i].score);
}
}
}
int main()
{
float avg = 0;
fun1();
avg = fun2();
fun3(avg);
return 0;
}