那位帮帮忙!简单的程序编写!谢谢了!
1、用结构体类型编写程序,实现输入一个学生的数学和英语成绩,然后计算并输出其平均成绩。2、5名学生,每个学生的数据包含:学号、姓名、三门课成绩。要求编写函数input,用来输入5个学生的数据记录。
3、已知某班有10名学生,每个学生的数据包含:学号、姓名、数学、英语、计算机成绩。要求求出每个同学的平均分,并输出平均分最高的学生的记录。用结构体数组实现。
程序代码:/* 3、已知某班有10名学生,每个学生的数据包含:学号、姓名、数学、英语、计算机成绩。
要求求出每个同学的平均分,并输出平均分最高的学生的记录。用结构体数组实现。
*/
#include <stdio.h>
#include <stdlib.h>
#define STU_NUMBER 3
#define MAX_NAME_SIZE 20
#define AVG_SCORE(x) (((x).avg) = (((x).math) + ((x).english) + ((x).computer)) / 3)
#define OUTPUT_SCORE(x) printf("%.1f\t%.1f\t%.1f\t%.1f\n", \
((x).math), ((x).english), ((x).computer), ((x).avg))
typedef struct tagSCORE { // 成绩
float math; // 数学
float english; // 英语
float computer; // 计算机
float avg; // 平均值
}SCORE;
typedef struct tagSTUDENT { // 学生
int id; // 学号
char name[MAX_NAME_SIZE]; // 姓名
SCORE score; // 成绩
}STUDENT;
static STUDENT stu[STU_NUMBER];
static const char *pszInputTip = "依次输入学号、姓名、数学(成绩)、英语(成绩)、计算机(成绩)\n\
参考范例:\n\
1 ZhangSan 90.0 65.5 74.6\n\
开始输入:\n";
static const char *pszOutputTip = "学号\t姓名\t数学\t英语\t计算机\t平均\n";
int stu_input(STUDENT *ptr_stu);
int stu_output(STUDENT *ptr_stu);
int score_input(SCORE *ptr_score);
int main(int argc, char *argv[])
{
printf(pszInputTip);
stu_input(stu);
printf(pszOutputTip);
stu_output(stu);
system("pause");
return 0;
}
int stu_input(STUDENT *stu)
{
int i = 0;
for (i = 0; i < STU_NUMBER; i++)
{
scanf("%d%s", &stu[i].id, stu[i].name);
score_input(&(stu[i].score));
}
return 0;
}
int stu_output(STUDENT *stu)
{
int i = 0;
for (i = 0; i < STU_NUMBER; i++)
{
printf("%d\t%s\t", stu[i].id, stu[i].name);
OUTPUT_SCORE(stu[i].score);
}
return 0;
}
int score_input(SCORE *ptr_score)
{
scanf("%f%f%f", &(ptr_score->math), &(ptr_score->english), &(ptr_score->computer));
AVG_SCORE(*ptr_score);
return 0;
}
