c结构体的初使用(学生成绩简单统计)
学生成绩简单统计。
写一个程序,读入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结构体的初使用(学生成绩简单统计)相关推荐
- C语言中怎么用循环统计买法,C语言入门谭浩强版简单选择法冒泡法用数组和for循环进行学生成绩简单统计处理...
C语言入门谭浩强版 简单选择法排序 冒泡法排序 用数组和for循环进行学生成绩简单统计处理 例如:求个人平均分 学科平均分 单科最高分等 简单选择法 #include #define N 10 voi ...
- c语言结构体编辑学生成绩管理,【C语言】结构体的应用以及学生成绩管理系统的设计...
一.结构体 数组中的各元素是属于同一个类型的.有时需要将不同类型的数据组合成一个整体,以便于引用.如,一个学生的学号.姓名.性别.年龄.成绩.家庭地址等项.这些项都与某一学生相联系.如果分别定义为互相 ...
- C语言不使用结构体实现链表,不用指针链表和结构体数组怎么编学生成绩管理系统啊...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include struct stu { int num;//学号 char name[10];//姓名 float cj[3];// ...
- c语言成绩管理系统不用结构体,不用指针链表和结构体数组怎么编学生成绩管理系统啊...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include struct stu { int num;//学号 char name[10];//姓名 float cj[3];// ...
- 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...
程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...
- 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
题目要求: 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 解题思路: 将n个学生的数据表示为结构体数组.按照功能函 ...
- 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)
有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) 代码: #include<stdio.h>#define ...
- 例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
C程序设计(第四版) 谭浩强 例9.7 个人设计 例 9.7 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 代码块 ...
- 【C】例9.7有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)
//有n个结构体变量,内含学生学号.姓名和3门课程的成绩. //要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) #include <stdio.h> #defi ...
最新文章
- 服务器日志显示乱码,CentosOS 6.5 服务器 控制台输出中文乱码,日志打印中文也乱码...
- 从0到1 | 手把手教你如何使用哈工大NLP工具——PyLTP!
- SCLS:巴斯德所崔杰组揭示海洋无脊椎动物RNA病毒的遗传多样
- 采购申请 RFC BAPI
- Qt for Android / ios 将图片或文件打包进安装包中
- PHP面试题:合并两个数组有几种方式,试比较它们的异同
- CentOS命令行安装配置KVM详细教程
- WPF中一个通用的BoolToXXX转换类
- nssl1460-逛机房【bfs】
- 使用默认方法进行接口演化–第二部分:接口
- vue打包后放在 nginx部署时候的配置文件
- 第十五天 图【下】(大结局)
- 【java】在jsp的js和css里面使用EL表达式取值|style里面用$取值
- for update在mysql中使用
- 深度学习:Imagenet Object Classification方法
- SHAP (SHapley Additive exPlanations)
- Leetcode|DFS|130. 被围绕的区域
- 把特斯拉送上火星的程序员,马斯克!
- NPOI实现Word表格删除一行
- python爬虫实验总结_Python爬虫总结
热门文章
- vmware虚拟机无法u盘启动的解决办法
- 什么是 10x 程序员?
- 实战篇-通用的页面列表导出Excel控件
- git仓库报错【 ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to】
- 详解Pod和容器资源管理和分配(CPU和内存分配,临时存储管理)
- 线上平台/线下渠道,VR营销渠道大盘点
- STATA 学习笔记 :相关系数
- 秀出新天际的SpringBoot笔记,让开发像搭积木一样简单
- 计算机职业素养200字,职业素养个人总结200字
- 统计学基础——常用的概率分布(二项分布、泊松分布、指数分布、正态分布)