您的位置:首页 > 编程语言

【编程小练习】学生成绩简单统计

2015-03-21 10:43 573 查看
写一个程序,读入10名学生的成绩。每个学生的数据,包含一个不带空格的名字(不超过19个字符),以及三门课的成绩,每门课的成绩是1到5的整数。程序要输出如下的一个列表,对每个学生输出他的录入时的序号、名字、三门课的成绩和平均成绩(浮点表示),最后输出每门课的平均成绩(浮点表示)和最低最高成绩。

// Hello_C.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"

#include "stdio.h"
//#include "stdlib.h"
//#include "string.h"

typedef struct {
char name[20];
int score[3];
} Student;
//    输入一个学生的数据
Student* student_input(Student *pStudent);
//    输出一个学生的数据,包括平均成绩
void student_print(const Student *pStudent);
//    计算一个学生的平均成绩
double student_average(const Student *pStudent);
//    获得学生的一个成绩
int student_get_score(const Student *pStudent, int index);
//    计算一门课的平均成绩
double score_average(const Student * const *pStudent, int index);
//    计算一门课的最高成绩
int score_max(const Student *pStudent, int index);
//    计算一门课的最低成绩
int score_min(const Student *pStudent, int index);
//    输出每门课的平均成绩
void average(const Student *pStudent);
//    输出每门课的最高成绩
void max(const Student *pStudent);
//    输出每门课的最低成绩
void min(const Student *pStudent);

const int num=10;//学生数
void main()
{
Student student[num];
Student *stu;
stu=&student[0];

//依次输入10个学生的数据
for (int i=0;i<num;i++)
{
printf("请依次输入学生%d的姓名和三个成绩:\n",i+1);
student_input(&student[i]);
}

//输出10个学生的分数和平均分
printf("no\tname\tscore1\tscore2\tscore3\taverage\n");
for (int i=0;i<num;i++)
{
printf("%d\t",i+1);
student_print(stu+i);
}

average(stu);
max(stu);
min(stu);
}

Student* student_input(Student *pStudent)
{
scanf("%s%d%d%d",pStudent->name,&(pStudent->score[0]),&(pStudent->score[1]),&(pStudent->score[2]));
return pStudent;
}

//    输出一个学生的数据,包括平均成绩
void student_print(const Student *pStudent)
{
printf("%s\t",pStudent->name);
for (int i=0;i<3;i++)
{
printf("%d\t",pStudent->score[i]);
}
printf("%.1f\n",student_average(pStudent));
}

//    计算一个学生的平均成绩
double student_average(const Student *pStudent)
{
int sum=0;
for (int i=0;i<3;i++)
{
sum+=student_get_score(pStudent,i);
}
return sum/3.0;
}

//获得学生的一个成绩
int student_get_score(const Student *pStudent, int index)
{
return pStudent->score[index];
}

//    计算一门课的平均成绩
double score_average( const Student *pStudent, int index)
{
double sum=0;
for (int i=0;i<num;i++)
{
sum+=student_get_score(pStudent+i,index);
}
return sum/num;
}

//    计算一门课的最高成绩
int score_max(const Student *pStudent, int index)
{
int temp=pStudent->score[index];
for (int i=1;i<num;i++)
{
if (temp<(pStudent+i)->score[index])
temp=(pStudent+i)->score[index];
}
return temp;
}
//    计算一门课的最低成绩
int score_min(const Student *pStudent, int index)
{
int temp=pStudent->score[index];
for (int i=1;i<num;i++)
{
if (temp>(pStudent+i)->score[index])
temp=(pStudent+i)->score[index];
}
return temp;
}

//    输出每门课的平均成绩
void average(const Student  *pStudent)
{
printf("average\t");
for (int i=0;i<3;i++)
{
printf("%.1f\t",score_average(pStudent,i));
}
printf("\n");
}

//    输出每门课的最高成绩
void max(const Student *pStudent)
{
printf("max\t");
for (int i=0;i<3;i++)
{
printf("%d\t",score_max(pStudent,i));
}
printf("\n");
}
//    输出每门课的最低成绩
void min(const Student *pStudent)
{
printf("min\t");
for (int i=0;i<3;i++)
{
printf("%d\t",score_min(pStudent,i));
}
printf("\n");
}


结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: