作业:IO:day2

题目一

第一步:创建一个 struct Student 类型的数组 arr[3],初始化该数组中3个学生的属性

第二步:编写一个叫做save的函数,功能为 将数组arr中的3个学生的所有信息,保存到文件中去,使用fread实现fwrite

第三步:编写一个叫做load的函数,功能为 将文件中保存的3个学生信息,读取后,写入到另一个数组 brr 中去

第四步:编写一个叫做 show的函数,功能为 遍历输出 arr 或者 brr 数组中的所有学生的信息

第五步:编写一个叫做 setMath 的函数,功能为 修改 文件中 所有学生的数学成绩

代码

#include "student.h"

NodePtr createHead()
{
	NodePtr H=(NodePtr)malloc(sizeof(Node));
	if(NULL==H)
	{
		printf("申请空间失败\n");
		return NULL;
	}
	
	H->tail=H;
	H->next=NULL;
	printf("头结点初始化完毕\n\n");

	return H;
}
NodePtr addData(NodePtr H)
{
	NodePtr newnode=(NodePtr)malloc(sizeof(Node));
	if(NULL==newnode)
	{
		printf("新节点申请失败\n");
		return NULL;
	}
	//原最后一个数据 指向处理
	H->tail->next=newnode;
	//头结点指向处理
	if(NULL==H->next)
	{
		H->next=newnode;//头指针处理
	}
	H->tail=newnode;//尾指针处理
	//本节点指针域处理
	newnode->next=NULL;
	//本节点数据域处理
	printf("姓名:");
	fscanf(stdin,"%s",newnode->data.name);
	
	printf("数学:");
	fscanf(stdin,"%lf",&newnode->data.math);
	printf("语文:");
	fscanf(stdin,"%lf",&newnode->data.chinese);
	printf("英语:");
	fscanf(stdin,"%lf",&newnode->data.english);
	printf("物理:");
	fscanf(stdin,"%lf",&newnode->data.physical);
	printf("化学:");
	fscanf(stdin,"%lf",&newnode->data.chemical);
	printf("生物:");
	fscanf(stdin,"%lf",&newnode->data.biological);
	return newnode;
}

void save(NodePtr H,const char* Name_of_File)
{
	if(NULL==H)
	{
		printf("保存失败:地址不合法\n");
		return;
	}
	//打开文件
	FILE* wfp=fopen(Name_of_File,"w");
	NodePtr temp=H;//用于遍历
	while(temp->next!=NULL)
	{
		temp=temp->next;
		fwrite(&temp->data,sizeof(temp->data),1,wfp);
	}
	//关闭文件
	fclose(wfp);
	printf("数据已写入:%s\n\n",Name_of_File);
}

void show(NodePtr H)
{
	NodePtr temp=H;
	if(NULL==H)
	{
		printf("地址不合法\n");
		return;
	}

	while(temp->next!=NULL)
	{
		temp=temp->next;
		printf("%s ",temp->data.name);
		printf("%lf ",temp->data.math);
		printf("%lf ",temp->data.chinese);
		printf("%lf ",temp->data.english);
		printf("%lf ",temp->data.physical);
		printf("%lf ",temp->data.chemical);
		printf("%lf\n",temp->data.biological);
	}
	printf("链表显示完毕\n\n");

}


void load(NodePtr H,const char* Name_of_File)
{
	//打开文件
	FILE* rfp=fopen(Name_of_File,"r");
	while(1)
	{
		NodePtr	newnode=(NodePtr)malloc(sizeof(Node));
		int res=fread(&newnode->data,sizeof(newnode->data),1,rfp);
		if(EOF==res|| 0==res)
		{
			free(newnode);
			newnode=NULL;
			break;
		}
		//指向处理
		//原最后一个数据 指向处理
		H->tail->next=newnode;
		H->tail=newnode;//尾指针处理
		//本节点指针域处理
		newnode->next=NULL;
		//本节点数据域处理
	}
	//关闭文件
	fclose(rfp);

	printf("数据已载入链表\n\n");
}

结果

题目

使用 fread 和 fwrite 将一张任意bmp图片改成德旗

代码

int main(int argc, const char *argv[])
{
	FILE* wfp=fopen("photo.bmp","r+");
	
	int width=0,height=0;
	fseek(wfp,18,SEEK_SET);
	fread(&width,4,1,wfp);
	fread(&height,4,1,wfp);

	fseek(wfp,54,SEEK_SET);
	unsigned char red[3]={0,0,255};
	unsigned char yellow[3]={0,255,255};//黄色
	unsigned char black[3]={0,0,0};//黑色

	for(int i=0;i<width*height;i++)
	{
		if(i>width*height*2/3)
		{
			fwrite(black,3,1,wfp);
		}
		else if(i>width*height/3)
		{
			fwrite(red,3,1,wfp);
		}
		else
		{
			fwrite(yellow,3,1,wfp);
		}
	}
	fclose(wfp);
	return 0;
}

结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

环动科技平均售价波动下滑:大客户依赖明显,应收账款周转率骤降

《港湾商业观察》施子夫 2024年12月18日&#xff0c;浙江环动机器人关节科技股份有限公司&#xff08;以下简称&#xff0c;环动科技&#xff09;的上市审核状态变更为“已问询”&#xff0c;公司在11月25日科创板IPO获上交所受理&#xff0c;独家保荐机构为广发证券。 此次环…

【数据可视化-11】全国大学数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

SAP 02-AMDP Functions for CDS Table Functions

1. 创建一个Core Data Service Table Functions 新建 Core Data Service Table Function 定义CDS Table Functions EndUserText.label: a simple AMDP for CDS Table Functions ClientDependent: true //打开 Open SQL 的自动客户端处理 defin…

Ungoogled Chromium127 编译指南 MacOS篇(八)- 开始编译

1. 引言 完成了所有依赖包的安装后&#xff0c;我们终于来到了最关键的编译阶段。在开始编译之前&#xff0c;有一些重要的配置信息需要了解。本文将指导您完成整个编译过程。 2. 签名相关说明 虽然在我们的测试编译中不需要进行签名操作&#xff0c;但了解官方的签名要求仍…

SpringBootWeb案例-1(day10)

准备工作 需求 & 环境搭建 需求说明 环境搭建 步骤&#xff1a; 准备数据库表(dept、emp)创建 springboot 工程&#xff0c;引入对应的起步依赖&#xff08;web、mybatis、mysql 驱动、lombok&#xff09;配置文件 application.properties 中引入 mybatis 的配置信息&…

动手学深度学习-卷积神经网络-1从全连接层到卷积

目录 不变性 多层感知机的限制 平移不变性 局部性 卷积 “沃尔多在哪里”回顾 通道 小结 我们之前讨论的多层感知机十分适合处理表格数据&#xff0c;其中行对应样本&#xff0c;列对应特征。 对于表格数据&#xff0c;我们寻找的模式可能涉及特征之间的交互&#xff0…

【HTML+CSS+JS+VUE】web前端教程-4-标签之段落、换行、水平线

标签之段落 段落是通过<p>标签定义的换行 如果您希望在不生产一个新段落的情况下进行换行&#xff08;新行&#xff09;&#xff0c;请使用<br><br />元素是一个空的HTML元素 <p>这个<br>段落<br>演示了分行的效果</p>水平线 <…

vulnhub靶场【DC系列】之7

前言 靶机&#xff1a;DC-7&#xff0c;IP地址为192.168.10.13 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用VMWare&#xff0c;网卡为桥接模式 对于文章中涉及到的靶场以及工具&#xff0c;我放置在网盘中&#xff0c;链接&#xff1a;https://pan.quark…

腾讯云AI代码助手编程挑战赛-图片转换工具

作品简介&#xff1a; 解决了人们学习生活中的图片格式转换问题&#xff0c; 制作该脚本&#xff0c;省去了打开在线编辑器操作的时间&#xff0c; 免费为用户提供图片格式的转换的实用小工具 技术架构 python语言的tk库来完成的GUI页面设计&#xff0c; 引用PIL包转换图…

Linux 文件的特殊权限—ACL项目练习

本文为Ubuntu Linux操作系统- 第二十一期~~ 上期回顾: 【ACL权限控制详解】 更多Linux 相关内容请点击&#x1f449;【Linux专栏】~ 主页&#xff1a;【练小杰的CSDN】 文章目录 项目项目要求具体的设置命令如下问题2问题3第一步&#xff1a;设置默认ACL前&#xff0c;在projec…

系统日志优化---自定义springboot-starter日志组件供各个服务使用

在优化项目时发现各个微服务都有各自的接口调用日志逻辑&#xff0c;比如每个服务都定义一个aop类拦截&#xff0c;十分冗余&#xff0c;其实是可以做成starter被各个服务引用使用&#xff0c;前提要先了解一下springboot自动装配原理 创建springboot工程&#xff0c;如果是jdk…

Matlab贝叶斯估计MCMC分析药物对不同种群生物生理指标数据评估可视化

全文链接&#xff1a;https://tecdat.cn/?p38756 摘要&#xff1a;本文着重探讨了如何利用Matlab实现贝叶斯估计。阐述了具体的实现流程&#xff0c;涵盖数据加载、先验常数设定、马尔可夫链蒙特卡洛&#xff08;MCMC&#xff09;属性指定、模型构建、运行链条以及结果查看等环…

js:日期对象和dom节点

日期对象 事件对象在前端开发里经常用来表示日期&#xff1a; 可以获取当前系统的时间 实例化 使用new关键字来实例化一个对象&#xff1a; const date new Date()console.log(date); 获取当前时间 const date new Date(2008-8-8)console.log(date); 获取指定时间 写得…

Ⅱ.INTRODUCTION TO CUDA C (CUDA C 入门)

前言 上一节环境配置好了&#xff0c;我们开始吧&#xff01; 一、A First Program 1. Hello, World! 我们先写一个C语言的 Hello, World! 作为对比 int main(void){printf("Hello, World!\n");return 0; }大家应该知道这个代码运行在CPU上吧&#xff0c;我们CP…

rsync如何实时同步

一、准备rsyncd服务环境 backup服务器&#xff08;rsync服务端&#xff09; 1、恢复了快照&#xff0c;重新安装rsync服务端 2、快速的部署rsyncd服务端 #!/bin/bash yum install rsync -ycat > /etc/rsyncd.conf << EOF uid www gid www port 873 fake supe…

Python的Matplotlib库应用(超详细教程)

目录 一、环境搭建 1.1 配置matplotlib库 1.2 配置seaborn库 1.3 配置Skimage库 二、二维图像 2.1 曲线&#xff08;直线&#xff09;可视化 2.2 曲线&#xff08;虚线&#xff09;可视化 2.3 直方图 2.4 阶梯图 三、三维图像 3.1 3D曲面图 3.2 3D散点图 3.3 3D散…

vue之element-ui文件上传(二)

一、点击上传&#xff0c;使用默认的action上传&#xff0c;添加校验&#xff0c;上传成功后&#xff0c;去除校验&#xff1a; <el-form-item label"文件md5" prop"fileMd5"><el-uploadv-if"!form.fileMd5"v-model"form.fileMd5&…

java项目之旅游网站的设计与实现(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的旅游网站的设计与实现。 项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于SpringBoot的…

IOS开发如何从入门进阶到高级

针对iOS开发的学习&#xff0c;不同阶段应采取不同的学习方式&#xff0c;以实现高效提升.本文将iOS开发的学习分为入门、实战、进阶三个阶段&#xff0c;下面分别详细介绍. 一、学习社区 iOS开源中国社区 这个社区专注于iOS开发的开源项目分享与协作&#xff0c;汇集了大量开…

ubuntu编译ijkplayer,支持rmvb以及mkv

1. 准备环境 sudo apt-get update apt install gcc yasm cmake python p7zip-full vim pkg-config autoconf automake build-essential dos2unix mercurial cmake-curse-gui -y apt-get -y --force-yes install libass-dev libtheora-dev libtool libva-dev libvdpau-dev libv…