IO: 作业:Day1
思维导图

main.c
#include"student.h"
int main(int argc, const char *argv[])
{
stuPtr h=creat();
int n=0;
add_node(h);
add_node(h);
add_node(h);
show(h);
save(h,"student.txt");
stuPtr ptr=creat();
load(ptr,"student.txt",n);
stuPtr ptr1=creat();
change(ptr1,"student.txt",n);
return 0;
}
student.c
#include"student.h"
stuPtr creat()
{
stuPtr h=(stuPtr)malloc(sizeof(stu));
if(NULL==h)
{
printf("创建失败\n");
return NULL;
}
h->len=0;
h->next=NULL;
return h;
}stuPtr creatNode()
{
stuPtr newnode=(stuPtr)malloc(sizeof(stu));
if(NULL==newnode)
{
printf("节点申请失败\n");
return NULL;
}
newnode->next=NULL;
printf("姓名:");
fscanf(stdin,"%s",newnode->Data.name);
printf("数学:");
fscanf(stdin,"%d",&newnode->Data.math);
printf("语文:");
fscanf(stdin,"%d",&newnode->Data.chinese);
printf("英语:");
fscanf(stdin,"%d",&newnode->Data.english);
printf("物理:");
fscanf(stdin,"%d",&newnode->Data.physical);
printf("化学:");
fscanf(stdin,"%d",&newnode->Data.chemical);
printf("生物:");
fscanf(stdin,"%d",&newnode->Data.biological);
}
int empt(stuPtr h)
{
if(NULL==h)
{
printf("判空失败\n");
return -1;
}
return h->next==NULL;
}
int add_node(stuPtr h)
{
if(NULL==h)
{
printf("添加数据失败\n");
return -1;
}
stuPtr newnode=creatNode();
stuPtr temp=h;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=newnode;
h->len++;
return 1;
}
void show(stuPtr h)
{
if(NULL==h)
{
printf("遍历失败\n");
return;
}
stuPtr p=h->next;
for(int i=0;i<h->len;i++)
{
fprintf(stdout,"%s %d %d %d %d %d %d\n",p->Data.name,p->Data.math,p->Data.chinese,p->Data.english,p->Data.physical,p->Data.chemical,p->Data.biological);
p=p->next;
}
return;
}
void save(stuPtr h,const char* filename)
{
FILE* p=fopen(filename,"w");
stuPtr p1=h->next;
for(int i=0;i<h->len;i++)
{
fprintf(p,"%s %d %d %d %d %d %d\n",p1->Data.name,p1->Data.math,p1->Data.chinese,p1->Data.english,p1->Data.physical,p1->Data.chemical,p1->Data.biological);
p1=p1->next;
}
fclose(p);
}
void load(stuPtr ptr,const char* filename,int n)
{
if(NULL==ptr)
{
printf("失败\n");
return;
}
FILE* p=fopen(filename,"r");
for(int i=0;i<n;i++)
{
stuPtr p1=creat();
fscanf(p,"%s %d %d %d %d %d %d\n",p1->Data.name,&p1->Data.math,&p1->Data.chinese,&p1->Data.english,&p1->Data.physical,&p1->Data.chemical,&p1->Data.biological);
stuPtr p2=ptr;
while(p2->next!=ptr)
{
p2=p2->next;
}
p2->next=p1;
p1->next=ptr;
ptr->len++;
}
return;
}
void change(stuPtr h,const char* filename,int n)
{
load(h,filename,n);
stuPtr p1=h->next;
for(int i=0;i<n;i++)
{
printf("请输入修改后%s的数学成绩",p1->Data.name);
scanf("%d",&p1->Data.math);
p1=p1->next;
}
save(h,filename);
}
student.h
#ifndef __STUDENT__
#define __STUDENT__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char name[20];
int math;
int chinese;
int english;
int physical;
int chemical;
int biological;
}data,*dataPtr;
typedef struct student
{
union
{
data Data;
int len;
};
struct student *next;
}stu,*stuPtr;
stuPtr creat();
stuPtr creatNode();int empt(stuPtr h);
int add(stuPtr h);
int add_node(stuPtr h);
void show(stuPtr h);
void save(stuPtr h,const char* filename);
void load(stuPtr h,const char* filename,int n);
void change(stuPtr h,const char* filename,int n);
#endif
结果

相关文章:
IO: 作业:Day1
思维导图 main.c #include"student.h" int main(int argc, const char *argv[]) { stuPtr hcreat(); int n0; add_node(h); add_node(h); add_node(h); show(h); save(h,"student.txt"); stuPtr ptrc…...
ue5 替换角色的骨骼网格体和动画蓝图
一开始动画蓝图,骨骼网格体都是用的女性角色 现在把它换成男性 编译 保存 运行 把动画类换成ABP_Manny 进入ABP_Manny中 进入到idle 找到这个拖进来 编译 就变成站着端枪 运行一下,没有问题...
el-cascader 树状选择-点击父级禁用子级
背景:项目上需要实现树状选择,点击父级禁用子级的功能,element组件本身没有该配置项说明:需要实现几个功能点:点击父级禁用子级;再次点击取消禁用;仅回填所选级;上下级不关联实现代码…...
AWS re:Invent 的创新技术
本月早些时候,Amazon 于 12 月 1 日至 5 日在内华达州拉斯维加斯举行了为期 5 天的 re:Invent 大会。如果您从未参加过 re:Invent 会议,那么最能描述它的词是“巨大”——不仅从与会者人数(60,000 人)来看&…...
PHP7和PHP8的最佳实践
php 7 和 php 8 的最佳实践包括:使用类型提示以避免运行时错误;利用命名空间组织代码并避免命名冲突;采用命名参数、联合类型等新特性增强可读性;用错误处理优雅地处理异常;关注性能优化,如避免全局变量和选…...
Debian、Ubuntu 22.04和ubuntu 24.04国内镜像源(包括 docker 源)
Debian 更换国内清华源 1、备份原文件mv /etc/apt/sources.list /etc/apt/sources.list.old 2、写入新源,以下是 Debian 11 的: cat > /etc/apt/sources.list << EOF deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib…...
点亮一个esp32 的led
最近入了一个ESP32 兄弟们,这玩意还可以,买来肯定是给它点亮啊对吧 我就是点灯侠🎇 😭千万不要不接天线啊,不然你会一直找不到你的wifi 1.点灯第一步你得有IDE Arduino 就是这个绿东西 可是怎么下载安装呢ÿ…...
C++ shared_ptr进一步认知,为什么引用计数>2退出作用域都可以调用析构
1.使用智能指针需要#include <memeroy> 2.上代码: #include <memory> #include <iostream> using namespace std; struct lifePeriod {lifePeriod():a(1){cout << "无参构造!" << endl;}virtual ~lifePeriod(…...
JavaScript代码片段二
见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... JavaScript统计文字个数、特殊字符转义、动态插入js代码、身份证验证 统计文字个数 f…...
【计算机视觉】单目深度估计模型-Depth Anything-V2
概述 本篇将简单介绍Depth Anything V2单目深度估计模型,该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比,V2版本通过采用合成图像训练、增加教师模型容量,并利用大规模伪标签现实数据进行学…...
Servlet 和 Spring MVC:区别与联系
前言 在 Java Web 开发中,Servlet 和 Spring MVC 是两个重要的技术。Servlet 是 Java Web 的基础组件,而 Spring MVC 是一个高级 Web 框架,建立在 Servlet 的基础之上,提供了强大的功能和易用性。这篇文章将从定义、原理、功能对…...
【期末复习】三、内存管理
1.物理内存管理 空闲内存管理方式主要分为:等长划分和不等长划分。 内存管理方式 单一连续分区 基本思想:一段时间内只有一个进程在内存。 特点:简单,内存利用率低, 有三种不同的布局: 固定分区 把内存空间分割成若干区域, 称为分区。 每个分区的大小可以相同也可…...
Microsoft Azure Cosmos DB:全球分布式、多模型数据库服务
目录 前言1. Azure Cosmos DB 简介1.1 什么是 Azure Cosmos DB?1.2 核心技术特点 2. 数据模型与 API 支持2.1 文档存储(Document Store)2.2 图数据库(Graph DBMS)2.3 键值存储(Key-Value Store)…...
【Docker】安装registry本地镜像库,开启Https功能
下载镜像 docker pull registry:2 需要启动https功能,就要生成服务端的自签名的证书和私钥,以及在docker客户端安装这个经过签名的证书。 第一步:生成公私钥信息,第二步,制作证书签名申请文件, 第三步&…...
JUC--线程池
线程池 七、线程池7.1线程池的概述7.2线程池的构建与参数ThreadPoolExecutor 的构造方法核心参数线程池的工作原理 Executors构造方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutornewScheduledThreadPool(int corePoolSize) 为什么不推荐使用内置线程池&…...
后端Java开发:第十一天
第十一天:方法重载 - 理解与应用 今天我们继续深入 Java 的世界,讨论 Java 中的 方法重载(Method Overloading)。你可能会想,什么是方法重载?简单来说,方法重载允许你在一个类中定义多个同名方…...
基于 GEE 的长时间序列 Landsat 5 影像下载
目录 1 完整代码 2 运行结果 1 完整代码 var LT5 ee.ImageCollection("LANDSAT/LT05/C01/T1"),imageVisParam {"opacity":1,"bands":["B4","B3","B2"],"gamma":1},roi ee.FeatureCollection(&quo…...
Unity-Mirror网络框架从入门到精通之Attributes属性介绍
前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进…...
软考证书邮寄步骤
一、点击网址 https://www.ruankao.org.cn/ 复制上述网址,粘贴至浏览器中。点击 “报名入口” 。 二、点击入口 选择考试批次。点击你所在考试地点的入口并进入。 三、登录 输入手机号和密码。进行验证。 四、点击基本信息 点击右上角。进入 “基本信息” 。 五、…...
计算机网络 (29)网络地址转换NAT
前言 网络地址转换(Network Address Translation,NAT)是计算机网络中的一种重要协议,它主要用于将私有IP地址转换为公共IP地址,以实现内部网络与外部网络之间的通信。 一、基本概念 NAT是一种在局域网(LAN&…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
