C语言实验 结构体一

server/2024/12/18 19:27:12/

时间:2024.12.17

6-1 按等级统计学生成绩

代码

// 根据成绩设置等级,并返回不及格人数
int set_grade(struct student *p, int n) {int count = 0;for (int i = 0; i < n; i++) {if (p[i].score >= 85 && p[i].score <= 100) {p[i].grade = 'A';} else if (p[i].score >= 70 && p[i].score < 85) {p[i].grade = 'B';} else if (p[i].score >= 60 && p[i].score < 70) {p[i].grade = 'C';} else {p[i].grade = 'D';count++;}}return count;
}

代码思路 

  1. 结构体定义

    • 首先定义了一个student结构体,其中包含学生的学号num、姓名name、成绩score和等级grade
  2. 函数set_grade

    • 这个函数接受一个student结构体指针p和一个整数n(表示学生数量)。
    • 函数内部通过循环遍历每个学生的成绩,根据成绩范围设置等级:
      • 如果成绩在 85 到 100 之间,等级设为'A'
      • 如果成绩在 70 到 84 之间,等级设为'B'
      • 如果成绩在 60 到 69 之间,等级设为'C'
      • 如果成绩低于 60,等级设为'D',并且将不及格人数count加 1。
    • 最后返回不及格人数count
  3. 主函数main

    • 定义了一个student结构体数组stu,用于存储学生信息。
    • 首先读取学生数量n
    • 然后通过循环读取每个学生的学号、姓名和成绩,存储到stu数组中。
    • 调用set_grade函数,传入stu数组和学生数量n,获取不及格人数count
    • 输出不及格人数。
    • 再次循环遍历stu数组,输出每个学生的学号、姓名和等级。

完整程序代码

#include <stdio.h>
#define MAXN 10// 学生结构体
struct student {int num;char name[20];int score;char grade;
};// 根据成绩设置等级,并返回不及格人数
int set_grade(struct student *p, int n) {int count = 0;for (int i = 0; i < n; i++) {if (p[i].score >= 85 && p[i].score <= 100) {p[i].grade = 'A';} else if (p[i].score >= 70 && p[i].score < 85) {p[i].grade = 'B';} else if (p[i].score >= 60 && p[i].score < 70) {p[i].grade = 'C';} else {p[i].grade = 'D';count++;}}return count;
}int main() {struct student stu[MAXN];int n, i;int count;scanf("%d", &n);for (i = 0; i < n; i++) {scanf("%d %s %d", &stu[i].num, stu[i].name, &stu[i].score);}count = set_grade(stu, n);printf("The count for failed (<60): %d\n", count);printf("The grades:\n");for (i = 0; i < n; i++) {printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);}return 0;
}

6-2 修改学生成绩


http://www.ppmy.cn/server/151252.html

相关文章

Spring Boot教程之二十五: 使用 Tomcat 部署项目

Spring Boot – 使用 Tomcat 部署项目 Spring Boot 是一个基于微服务的框架&#xff0c;在其中创建可用于生产的应用程序只需很少的时间。Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。如今&#xff0c;它正成为开发人员的最爱&#xff0c;因为它是一个…

stm32-- 存储-flash和ram

本文中的程序都是伪代码&#xff0c;没经过验证使用。 keil编译完成&#xff0c;会得到一个.map文件&#xff0c;详细列出空间占用情况。 示例如下&#xff1a; Total RO Size (Code RO Data) 39888 ( 38.95kB) Total RW Size (RW Data ZI Data) …

【网络】传输层协议UDP/TCP网络层IP数据链路层MACNAT详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.传输层协议 UDP 1.1 传输层 1.2 端口号 1.3 UDP 协议 1.3.1 UDP 协议端格式 1.3.2 UDP 的特点 1.3.3 面向数据报 1…

【鸿蒙实战开发教程】HarmonyOS next开发网络请求封装(Api11Release)

前言 根据研究机构Counterpoint Research发布的最新数据&#xff0c;2024年第一季度&#xff0c;鸿蒙OS份额由去年一季度的8%上涨至17%&#xff0c;iOS份额则从20%下降至16%。 这意味着&#xff0c;华为鸿蒙OS在中国市场的份额超越苹果iOS&#xff0c;已成中国第二大操作系统。…

2024年华为OD机试真题-找终点-C++-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述 给定一个正整数数组,设为…

Liquibase结合SpringBoot使用实现数据库管理

Liquibase概述 Liquibase 是一个开源的数据库变更管理工具&#xff0c;用于跟踪、版本化、和管理数据库结构&#xff08;如表、字段、索引等&#xff09;的变更。它的目的是使数据库变更的过程更加透明、可控制、自动化&#xff0c;避免开发团队在多个环境中手动执行相同的数据…

陕西科技大学《2024年807自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《陕西科技大学807自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

设计模式之 桥接模式 C# 范例

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象与实现解耦&#xff0c;使得两者可以独立变化。桥接模式通常适用于以下情形&#xff1a; 类的功能可以在不同的维度上变化&#xff0c;例如在图形界面开发中&#xff0c;可能有不同的…