当前位置: 首页 > article >正文

11.26作业

#include "test.h"
#include <myhead.h>

int main(int argc, const char *argv[]) 
{
    Student students[100]; // 假设最多有100个学生
    int select = 0;
    int n = 0; // 学生数量
	menu();
    while (1) 
	{
        printf("请输入你想要的功能:");
        scanf("%d", &select);
        getchar(); // 吸收换行符
        switch (select) 
		{
            case 1:
                input(students, n);
                break;
            case 2:
                output(students, n);
                break;
            case 3:
                add(students, &n);
                break;
            case 4:
                delate(students, n);
                break;
            case 5:
                change_TEOL(students, n);
                break;
            case 6:
                show(students, n);
                break;
            case 7:
                compare(students, n);
                break;
            case 0:
                exit(0);
            default:
                printf("您输入的功能有误,请重新输入\n");
        }
    }
    return 0;
}
#include "test.h"
#include <myhead.h>

int main(int argc, const char *argv[]) 
{
    Student students[100]; // 假设最多有100个学生
    int select = 0;
    int n = 0; // 学生数量
	menu();
    while (1) 
	{
        printf("请输入你想要的功能:");
        scanf("%d", &select);
        getchar(); // 吸收换行符
        switch (select) 
		{
            case 1:
                input(students, n);
                break;
            case 2:
                output(students, n);
                break;
            case 3:
                add(students, &n);
                break;
            case 4:
                delate(students, n);
                break;
            case 5:
                change_TEOL(students, n);
                break;
            case 6:
                show(students, n);
                break;
            case 7:
                compare(students, n);
                break;
            case 0:
                exit(0);
            default:
                printf("您输入的功能有误,请重新输入\n");
        }
    }
    return 0;
}
ubuntu@ubuntu:day19$ cat test.c
#include "test.h"
#include <myhead.h>

void menu() 
{
    printf("学生管理系统功能如下:\n");
    printf("功能1:信息录入\n");
    printf("功能2:信息展示\n");
    printf("功能3:添加一个学生\n");
    printf("功能4:输入一个学号,删除该学号对应的学生信息\n");
    printf("功能5:输入一个学生姓名,更改其联系方式\n");
    printf("功能6:输入一个学生姓名,展示该学生的所有信息\n");
    printf("功能7: 将学生按成绩进行降序排序\n");
    printf("功能0:退出系统\n");
}

void input(Student *ptr, int n) 
{
    printf("请输入学生的信息\n");
    for (int i = 0; i < n; i++) 
	{
        printf("请输入第%d个学生的学号\n", i + 1);
        scanf("%d", &ptr[i].num);
        scanf("%*c"); // 吸收换行符
        printf("请输入第%d个学生的姓名\n", i + 1);
        scanf("%19s", ptr[i].name); // 限制输入长度
        printf("请输入第%d个学生的成绩\n", i + 1);
        scanf("%lf", &ptr[i].score);
        printf("请输入第%d个学生的性别\n", i + 1);
        scanf(" %c", &ptr[i].sex); // 吸收前一个字符的换行符
        printf("请输入第%d个学生的电话\n", i + 1);
        scanf("%10s", ptr[i].TEOL); // 限制输入长度
    }
    printf("录入成功\n");
}

void output(const Student *ptr, int n) 
{
    printf("学生信息如下:\n");
    for (int i = 0; i < n; i++) 
	{
        printf("%d\t%s\t%lf\t%c\t%s\n", ptr[i].num, ptr[i].name, ptr[i].score, ptr[i].sex, ptr[i].TEOL);
    }
}

void add(Student *ptr, int *n) 
{
    if (*n >= 100) 
	{ // 假设最大100个学生
        printf("学生数量已达上限\n");
        return;
    }
    printf("请输入新学生的学号\n");
    scanf("%d", &ptr[*n].num);
    scanf("%*c"); // 吸收换行符
    printf("请输入新学生的姓名\n");
    scanf("%19s", ptr[*n].name); // 限制输入长度
    printf("请输入新学生的成绩\n");
    scanf("%lf", &ptr[*n].score);
    printf("请输入新学生的性别\n");
    scanf(" %c", &ptr[*n].sex); // 吸收前一个字符的换行符
    printf("请输入新学生的电话\n");
    scanf("%10s", ptr[*n].TEOL); // 限制输入长度
    (*n)++;
    printf("录入成功\n");
}

void delate(Student *ptr, int n) 
{
    int m;
    printf("请输入想要删除信息的学生学号\n");
    scanf("%d", &m);
    for (int i = 0; i < n; i++) 
	{
        if (ptr[i].num == m) 
		{
            for (int j = i; j < n - 1; j++) 
			{
                ptr[j] = ptr[j + 1];
            }
            n--;
            printf("删除完成\n");
            return;
        }
    }
    printf("未找到学号为%d的学生\n", m);
}

void change_TEOL(Student *ptr, int n) 
{
    char a[20];
    printf("请输入想要修改联系方式学生的姓名: ");
    scanf("%19s", a); // 限制输入长度
    for (int i = 0; i < n; i++) {
        if (strcmp(ptr[i].name, a) == 0) 
		{
			printf("联系方式修改为:");
            scanf("%10s", ptr[i].TEOL); // 限制输入长度
            printf("修改完成\n");
            return;
        }
    }
    printf("未找到姓名为%s的学生\n", a);
}

void show(Student *ptr, int n) 
{
    char a[20];
    printf("请输入想要展示信息学生的姓名: ");
    scanf("%19s", a); // 限制输入长度
    for (int i = 0; i < n; i++) {
        if (strcmp(ptr[i].name, a) == 0) 
		{
            printf("学生信息为:%d\t%s\t%lf\t%c\t%s\n", ptr[i].num, ptr[i].name, ptr[i].score, ptr[i].sex, ptr[i].TEOL);
            return;
        }
    }
    printf("未找到姓名为%s的学生\n", a);
}

void compare(Student *ptr, int n) 
{
    printf("学生成绩降序排序的顺序为:\n");
    for (int j = 1; j < n; j++) 
	{
        for (int i = 0; i < n - j; i++) 
		{
            if (ptr[i].score < ptr[i + 1].score) {
                Student temp = ptr[i];
                ptr[i] = ptr[i + 1];
                ptr[i + 1] = temp;
            }
        }
    }
    output(ptr, n); // 显示排序后的结果
}
#ifndef TEST_H
#define TEST_H

typedef struct Student 
{
    int num;
    char name[20];
    double score;
    char sex;
    char TEOL[11];
} Student;

void menu(void);
void input(Student *ptr, int n);
void output(const Student *ptr, int n);
void add(Student *ptr, int *n);
void delate(Student *ptr, int n);
void change_TEOL(Student *ptr, int n);
void show(Student *ptr, int n);
void compare(Student *ptr, int n);

#endif

C语言特性
├── 结构体
│   ├── 引入
│   │   └── 用于定义新的数据类型,如学生、工人等
│   ├── 定义
│   │   ├── 关键字 struct
│   │   ├── 结构体名
│   │   ├── 成员列表:类型和变量名
│   │   └── 结尾分号
│   ├── 注意事项
│   │   ├── struct 不能省略
│   │   ├── 结构体名类似于 int、float
│   │   ├── 成员用花括号包裹
│   │   ├── 成员类型任意
│   │   └── 结尾分号不能省略
│   ├── 定义变量和初始化
│   │   ├── 三种方式定义变量
│   │   ├── 三种方式初始化
│   │   └── 部分成员初始化
│   ├── 成员访问
│   │   ├── 点运算符(.)
│   │   └── 箭头运算符(->)
│   └── 结构体数组
│       └── 访问数组元素的成员
├── 特殊关键字
│   ├── const
│   │   ├── 常属性
│   │   ├── 修饰普通变量
│   │   ├── 修饰指针变量
│   │   │   ├── const int *ptr
│   │   │   ├── int const *ptr
│   │   │   ├── int * const ptr
│   │   │   └── const int * const ptr
│   │   └── 修饰函数参数和返回值
│   ├── static
│   │   ├── 修饰局部变量
│   │   ├── 修饰全局变量
│   │   └── 修饰函数
│   └── extern
│       └── 引入其他文件的全局变量
└── 例子和练习
    ├── 结构体大小
    ├── 英雄信息排序
    └── const 和 static 示例


http://www.kler.cn/a/411227.html

相关文章:

  • 【ONE·基础算法 || 动态规划(二)】
  • 【DL笔记】神经网络轻量化(CV方向)的一些论文记录
  • PyQt6+pyqtgraph折线图绘制显示
  • 计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
  • 【k8s】资源限制管理:Namespace、Deployment与Pod的实践
  • Javaee的网络编程初识
  • SLF4J日志快速上手
  • TCP/IP协议攻击与防范
  • C# Winform贪吃蛇小游戏源码
  • VOLO实战:使用VOLO实现图像分类任务(二)
  • 网站布局编辑器前端开发:设计要点与关键考量
  • 数据结构 (12)串的存储实现
  • ASP.NET Web(.Net Framework) Http服务器搭建以及IIS站点发布
  • [Redis#6] list | 命令 | 应用 | 消息队列 | 微博 Timeline
  • CBK1安全与风险管理
  • 重学SpringBoot3-异步编程完全指南
  • shell编程第四天(day036)
  • sql server 获取当前日期的时间戳
  • Leetcode105从前序与中序遍历序列构造二叉树
  • tableau-制作30个图表