【学生系统】基于结构体的一个训练小项目

news2024/11/26 11:52:58
  • (꒪ꇴ꒪ ),hello我是祐言
  • 博客主页:C语言基础,Linux基础,软件配置领域博主🌍
  • 快上🚘,一起学习!
  • 送给读者的一句鸡汤🤔:
  • 集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏

        我们来设计实现一个程序:对学生信息的存储、计算和打印。它可以方便地管理和处理多个学生的成绩数据,并根据平均成绩进行等级评定。

基础有功能:

        (1)初始化了一个包含10条学生信息的结构体数组 str,每个学生有自己的姓名、年龄、学号以及语文、数学、英语成绩;
        (2)调用 show_array 函数,逐行打印出学生的基本信息,包括姓名、年龄、学号、语文、数学和英语成绩;
        (3)调用 average_sum 函数,计算每个学生的平均成绩,并打印出学生的姓名和对应的平均成绩;
       (4) 调用 grade_average 函数,根据学生的平均成绩评定等级,并打印出学生的姓名和对应的评级。

        效果:

        源码:

#include <stdio.h>
#include <string.h>  
#include <stdlib.h>


struct student 
{
	char name[10];
	short int age;
	int number;
	float chinese;
	float math;
	float english;
	float average;
	char grade[2];
};

void show_array(struct student *str, int n)
{
	for (int i=0; i<n; i++)
	{
		printf("姓名:%s,年龄:%d,学号:%d,语文:%.1f,数学:%.1f,英语:%.1f\n", 
		str[i].name, str[i].age, str[i].number, str[i].chinese, str[i].math, str[i].english);
		
	}
}

float average_sum(struct student *str,int n)
{
	
	for(int i = 0;i<n;i++){
		
		float average = (str[i].chinese + str[i].math + str[i].english)/3;
		str[i].average = average;
	}
	
	for (int i=0; i<n; i++)
	{
		printf("姓名:%s,对应平均分:%.1f \n", str[i].name, str[i].average);		
	}
	
}
char grade_average(struct student *str,int n)
{
	for(int i = 0;i<n;i++){
		if(str[i].average >= 90){
			strcpy(str[i].grade, "A");
		}
		else if(str[i].average >= 80 && str[i].average < 90){
			strcpy(str[i].grade, "B");
		}
		else if(str[i].average >= 70 && str[i].average < 80){
			strcpy(str[i].grade, "C");
		}
		else if(str[i].average >= 60 && str[i].average < 70){
			strcpy(str[i].grade, "D");
		}
		else{
			strcpy(str[i].grade, "E");
		}
	}
	
	for (int i=0; i<n; i++)
	{
		printf("姓名:%s,对应评级:%s \n", str[i].name, str[i].grade);		
	}
	
	
}





int main(void)
{

	struct student str[50] ={
	{.name = "小苏",.age = 22,.number = 7164101,.chinese = 88,.math = 94.5,.english = 77},
	{.name = "小赵",.age = 21,.number = 7164102,.chinese = 76,.math = 89.5,.english = 95},
	{.name = "小钱",.age = 20,.number = 7164103,.chinese = 95,.math = 91.5,.english = 78.5},
	{.name = "小孙",.age = 23,.number = 7164104,.chinese = 67,.math = 75.5,.english = 75},
	{.name = "小李",.age = 21,.number = 7164105,.chinese = 68,.math = 64.5,.english = 86},
	{.name = "小王",.age = 22,.number = 7164106,.chinese = 77,.math = 75,.english = 83},
	{.name = "小张",.age = 22,.number = 7164107,.chinese = 81,.math = 91.5,.english = 71.5},
	{.name = "小陈",.age = 21,.number = 7164108,.chinese = 85,.math = 90,.english = 66},
	{.name = "小杨",.age = 23,.number = 7164109,.chinese = 97,.math = 86.5,.english = 97},
	{.name = "小吴",.age = 21,.number = 7164110,.chinese = 93,.math = 95,.english = 68},
	};
	
	
	printf("-----学生名单-----\n");
	show_array(str, 10);
	
	
	printf("-------均分-------\n");
	average_sum(str, 10);
	
	
	printf("-------评级-------\n");
	grade_average(str, 10);
	
    return 0;	
}

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉感谢关注🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go []uint8和string的爱恨情仇

先上代码&#xff1a; package mainimport "fmt"func main() {byteSlice : []uint8{52, 44, 51} // 示例字节切片str : string(byteSlice)fmt.Printf("byteSlice:%v\r\n", str) }// 执行-输出 byteSlice:4,3 干货&#xff1a; 在Go语言中&#xff0c;[]u…

TiDB-学习笔记02

编写这个笔记&#xff0c;希望能记录下学习TiDB时候的知识点。 参考文章 目的链接&详细TiDB中文手册 Overview 面板重要监控指标详解 | PingCAP 文档中心 第二章 章节Overview 面板重要监控指标详解 | PingCAP 文档中心 认识Grafana Grafana监控TiDB 对应中文手册的【14…

如何使用 Java 代理插件在不更改应用程序代码的情况下捕获自定义指标

作者&#xff1a;Jack Shirazi Elastic APM Java 代理会自动跟踪许多指标&#xff0c;包括通过 Micrometer 或 OpenTelemetry Metrics API 生成的指标。 因此&#xff0c;如果你的应用程序&#xff08;或其包含的库&#xff09;已公开来自这些 API 之一的指标&#xff0c;则安装…

3Ds max无需插件创建逼真的草地

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像&#xff1a; 步骤-1 创建一个宽度 x 高度为 100100&#xff08;我使用厘米&#xff09;和 100100 段的平面。 步骤-2 将平面转换为“编辑多边形”并选择所有顶点&#xff08;Ctrl A&#xff09…

AI Chat 设计模式:6. 装饰模式

本文是该系列的第六篇&#xff0c;内容采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的旁白。 问题列表 Q.1 你知道装饰模式吗A.1Q.2 详细说说装饰模式的组成角色A.2Q.3 举一个装饰模式的例子吧&#xf…

Threejs加载倾斜摄影OSGB数据

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。获取模型或源码请点赞收藏加留言&#xff0c;有问…

数据库锁的12连问,抗住!

前言 金三银四很快就要来啦&#xff0c;准备了数据库锁的12连问&#xff0c;相信大家看完肯定会有帮助的。 1. 为什么需要加锁 在日常生活中&#xff0c;如果你心情不好想静静&#xff0c;不想被比别人打扰&#xff0c;你就可以把自己关进房间里&#xff0c;并且反锁。这就是生…

git基础教程(linux)

1.git简介 git 分布式版本控制 git两大特点&#xff1a; 版本控制&#xff1a;支持多人同时开发 分布式&#xff1a; 2.安装与配置 安装 sudo apt-get install git安装成功&#xff0c;运行如下命令&#xff1a; git3.创建一个版本库 (1)新建一个目录git_test&#xff0c…

网络编程7——IP协议(子网掩码,NAT机制,IPv6协议) + 以太网

文章目录 前言一、IP协议协议头格式认识IP地址格式组成子网掩码 地址管理1.动态分配2.NAT机制3.IPv6协议 路由选择 二、以太网以太网帧格式认识MTU 总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话&#x…

第十六章 原理篇:DETR

脑子不好使啊&#xff01;复习过的东西过几天就忘记了&#xff01; 参考教程&#xff1a; 论文地址&#xff1a;[pdf]End-to-End Object Detection with Transformer 源码地址&#xff1a;https://github.com/facebookresearch/detr 文章目录 概述the DETR modelDETR architect…

springboot篮球论坛系统

篮球论坛管理方面的任务繁琐,以至于每年都在篮球论坛管理这方面投入较多的精力却效果甚微,篮球论坛系统的目标就是为了能够缓解篮球论坛管理工作方面面临的压力,让篮球论坛管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到原理和技术有: B/S、java技术和MySQL…

Git❀详细使用教程

Git❀详细使用教程 一、Git简介1.1 什么是Git&#xff1f;1.2 Git的特点1.3 集中式与分布式的区别&#xff1f;1.4 Git工作流程图 二、Git安装与常用命令2.1 Git环境配置2.1.1 下载与安装2.1.2 基本配置2.1.3 为常用指令设置别名&#xff08;可选&#xff09;2.1.4 解决GitBash…

ChatGPT炒股:从上市公司招股说明书中批量提取发明专利表格

上市公司招股说明书通常会详细列明公司的发明专利&#xff0c;而通过企业的发明专利可以了解企业未来的业务布局情况&#xff0c;怎么把这些发明专利列表都批量提取出来呢? 随机打开几个上市公司的招股说明书&#xff0c;可以看到发明专利这一内容&#xff0c;共同的特征是都有…

Python的面向对象从入门到精通(简单易懂)

目录 1 初识对象 2. 成员方法 3. 类和对象 4. 构造方法 5. 其它内置方法 6. 封装 7. 继承 8. 复写 9. 类型的注解 10. 多态 1 初识对象 1. 生活中或是程序中&#xff0c;我们都可以使用设计表格、生产表格、填写表格的形式组织数据 2. 进行对比&#xff0c;在程序中&a…

进程间通信-无名管道

#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <string.h> int main(int argc, char **argv) {int pfd[2];int ret;pid_t pid;char buf[20]{0};retpipe(pfd);//创建一个无名管道if(ret<0){perror("pipe");ret…

lombok和guava工具

写在前面 本文看下如何通过使用lombok和guava来提高生产力。 1&#xff1a;lombok 我们开发程序时&#xff0c;如read method&#xff0c;write method&#xff0c;tostring&#xff0c;构造函数等&#xff0c;其写法其实都是固定和重复的&#xff0c;因此就可以考虑使用程序…

如何操作MySQL数据库基本数据

目录 一、MySQL数据库概念 数据 表&#xff08;数据表&#xff09; 数据库 数据库管理系统 数据库的建立和维护功能 数据定义功能 数据操纵功能 数据库的运行管理功能 通信功能 数据流向 二、主流数据库分类 1.SQL Server 数据库 &#xff08;微软分公司产品&…

Linux网络第六章——PXE高效批量网络装机

高效&#xff1a;速度快 批量&#xff1a;多台同时安装 网络&#xff1a;必须在网络环境 PXE&#xff1a;自动装机 需要&#xff1a; 1、DHCP实现地址自动分配 2、FTP把安装文件传输给客户机 3、xinetd&#xff1a;新一代的网络守护进程服务程序&#xff0c;管理轻量级…

赎金信(力扣)思维 JAVA

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 输入&#xff…

请求响应-响应-案例

案例需求 加载并解析emp.xml文件中的数据&#xff0c;完成数据处理&#xff0c;并在页面展示 emp.xml文件代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <emps><emp><name>金毛狮王</name><age>5…