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

#include <stdio.h>
typedef struct
{char name[20];int score[3];
} Student;//    输入一个学生的数据
Student* student_input(Student *pStudent);
//    输出一个学生的数据,包括平均成绩
void student_print(int no,const Student *pStudent);
//    计算一个学生的平均成绩
double student_average(const Student *pStudent);
//    获得学生的一个成绩
int student_get_score(const Student *pStudent, int index);
//    获取单门成绩的平均分
double subject_average(const Student* pstus[],int len,int index);
//    获取单门成绩的最低分
int subject_min(const Student* pstus[],int len,int index);
//    获取单门成绩的最高分
int subject_max(const Student* pstus[],int len,int index);
/*
写一个程序,读入10名学生的成绩。每个学生的数据,包含一个不带空格的名字(不超过19个字符),
以及三门课的成绩,每门课的成绩是1到5的整数。程序要输出如下的一个列表,
对每个学生输出他的录入时的序号、名字、三门课的成绩和平均成绩(浮点表示),
最后输出每门课的平均成绩(浮点表示)和最低最高成绩。
*/
int main(void)
{const int size = 3;Student stus[size];Student* pstus[size];for(int i=0; i<size; i++){pstus[i] = &stus[i];}printf("%p\n",pstus[0]);// 0029feecfor(int i=0; i<size; i++){student_input(pstus[i]);}// no      name    score1  score2  score3  averageprintf("\t%s\t%s\t%s\t%s\t%s\t%s\n","no","name","score1","score2","score3","average");for(int i=0; i<size; i++){student_print(i,pstus[i]);}/*average 3.8     3.4     3.6min     2       2       1max     5       5       5*/printf("\t\t%s\t%.2f\t%.2f\t%.2f\n","average",subject_average(pstus,size,1),subject_average(pstus,size,2),subject_average(pstus,size,3));printf("\t\t%s\t%d\t%d\t%d\n","min",subject_min(pstus,size,1),subject_min(pstus,size,2),subject_min(pstus,size,3));printf("\t\t%s\t%d\t%d\t%d\n","max",subject_max(pstus,size,1),subject_max(pstus,size,2),subject_max(pstus,size,3));return 0;
}//    输入一个学生的数据
Student* student_input(Student *pStudent)
{//gets(pStudent->name);scanf("%s",pStudent->name);scanf("%i",&(pStudent->score[0]));scanf("%i",&(pStudent->score[1]));scanf("%i",&(pStudent->score[2]));return pStudent;
}
//    输出一个学生的数据,包括平均成绩
void student_print(int no,const Student *pStudent)
{// 4       L.Tson  4       3       4       3.66667printf("\t%d\t%s\t%d\t%d\t%d\t%.2f\n",no,pStudent->name,student_get_score(pStudent,1),student_get_score(pStudent,2),student_get_score(pStudent,3),student_average(pStudent));
}//    计算一个学生的平均成绩
double student_average(const Student *pStudent)
{int a = pStudent->score[0];int b = pStudent->score[1];int c = pStudent->score[2];double avg = 1.0/3*(a+b+c);return avg;
}
//    获得学生的一个成绩
int student_get_score(const Student *pStudent, int index)
{return pStudent->score[index-1];
}
//    获取单门成绩的平均分
double subject_average(const Student* pstus[],int len,int index)
{double avg = 0;int total = 0;for(int i=0; i<len; i++){total+=pstus[i]->score[index-1];// printf("total = %d\n",total);}avg = 1.0*total/len;return avg;
}
//    获取单门成绩的最低分
int subject_min(const Student* pstus[],int len,int index)
{int min = pstus[0]->score[index-1];for(int i=0; i<len; i++){int cur = pstus[i]->score[index-1];if(min>cur){min = cur;}}return min;
}
//    获取单门成绩的最高分
int subject_max(const Student* pstus[],int len,int index)
{int max = pstus[0]->score[index-1];for(int i=0; i<len; i++){int cur = pstus[i]->score[index-1];if(max<cur){max = cur;}}return max;
}

结果展示:

        no      name    score1  score2  score3  average0       汪汪    4       4       5       4.331       喵喵    2       3       3       2.672       哔哔    5       5       5       5.00average 3.67    4.00    4.33min     2       3       3max     5       5       5

c结构体的初使用(学生成绩简单统计)相关推荐

  1. C语言中怎么用循环统计买法,C语言入门谭浩强版简单选择法冒泡法用数组和for循环进行学生成绩简单统计处理...

    C语言入门谭浩强版 简单选择法排序 冒泡法排序 用数组和for循环进行学生成绩简单统计处理 例如:求个人平均分 学科平均分 单科最高分等 简单选择法 #include #define N 10 voi ...

  2. c语言结构体编辑学生成绩管理,【C语言】结构体的应用以及学生成绩管理系统的设计...

    一.结构体 数组中的各元素是属于同一个类型的.有时需要将不同类型的数据组合成一个整体,以便于引用.如,一个学生的学号.姓名.性别.年龄.成绩.家庭地址等项.这些项都与某一学生相联系.如果分别定义为互相 ...

  3. C语言不使用结构体实现链表,不用指针链表和结构体数组怎么编学生成绩管理系统啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include struct stu { int num;//学号 char name[10];//姓名 float cj[3];// ...

  4. c语言成绩管理系统不用结构体,不用指针链表和结构体数组怎么编学生成绩管理系统啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include struct stu { int num;//学号 char name[10];//姓名 float cj[3];// ...

  5. 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...

    程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...

  6. 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。

    题目要求: 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 解题思路: 将n个学生的数据表示为结构体数组.按照功能函 ...

  7. 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)

    有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) 代码: #include<stdio.h>#define ...

  8. 例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。

    C程序设计(第四版) 谭浩强 例9.7 个人设计 例 9.7 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 代码块 ...

  9. 【C】例9.7有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)

    //有n个结构体变量,内含学生学号.姓名和3门课程的成绩. //要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) #include <stdio.h> #defi ...

最新文章

  1. 服务器日志显示乱码,CentosOS 6.5 服务器 控制台输出中文乱码,日志打印中文也乱码...
  2. 从0到1 | 手把手教你如何使用哈工大NLP工具——PyLTP!
  3. SCLS:巴斯德所崔杰组揭示海洋无脊椎动物RNA病毒的遗传多样
  4. 采购申请 RFC BAPI
  5. Qt for Android / ios 将图片或文件打包进安装包中
  6. PHP面试题:合并两个数组有几种方式,试比较它们的异同
  7. CentOS命令行安装配置KVM详细教程
  8. WPF中一个通用的BoolToXXX转换类
  9. nssl1460-逛机房【bfs】
  10. 使用默认方法进行接口演化–第二部分:接口
  11. vue打包后放在 nginx部署时候的配置文件
  12. 第十五天 图【下】(大结局)
  13. 【java】在jsp的js和css里面使用EL表达式取值|style里面用$取值
  14. for update在mysql中使用
  15. 深度学习:Imagenet Object Classification方法
  16. SHAP (SHapley Additive exPlanations)
  17. Leetcode|DFS|130. 被围绕的区域
  18. 把特斯拉送上火星的程序员,马斯克!
  19. NPOI实现Word表格删除一行
  20. python爬虫实验总结_Python爬虫总结

热门文章

  1. vmware虚拟机无法u盘启动的解决办法
  2. 什么是 10x 程序员?
  3. 实战篇-通用的页面列表导出Excel控件
  4. git仓库报错【 ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to】
  5. 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)
  6. 线上平台/线下渠道,VR营销渠道大盘点
  7. STATA 学习笔记 :相关系数
  8. 秀出新天际的SpringBoot笔记,让开发像搭积木一样简单
  9. 计算机职业素养200字,职业素养个人总结200字
  10. 统计学基础——常用的概率分布(二项分布、泊松分布、指数分布、正态分布)