实验5结构体与文件处理
- 格式:doc
- 大小:22.50 KB
- 文档页数:1
一、实验目的1. 熟悉文件的基本概念和操作方法。
2. 掌握文件的基本编辑和格式化技巧。
3. 了解文件的安全性设置和备份方法。
4. 培养良好的文件管理习惯。
二、实验环境1. 操作系统:Windows 102. 文件编辑软件:Microsoft Word3. 文件管理软件:Windows资源管理器三、实验内容1. 文件的基本操作(1)创建新文件:在Windows资源管理器中,右键点击目标文件夹,选择“新建”→“文本文档”,输入文件名并按回车键。
(2)打开文件:在Windows资源管理器中,双击目标文件或右键点击文件,选择“打开”。
(3)保存文件:在文件编辑软件中,点击“文件”菜单,选择“保存”或“另存为”,选择保存路径和文件名。
(4)重命名文件:在Windows资源管理器中,右键点击目标文件,选择“重命名”,输入新文件名并按回车键。
(5)删除文件:在Windows资源管理器中,右键点击目标文件,选择“删除”。
2. 文件编辑和格式化(1)文字编辑:在文件编辑软件中,输入文字内容,可以使用键盘和鼠标进行文字编辑。
(2)格式化文字:在文件编辑软件中,选中文字内容,点击“格式”菜单,进行字体、字号、颜色、对齐方式等设置。
(3)插入图片:在文件编辑软件中,点击“插入”菜单,选择“图片”,选择图片路径和文件名,插入图片。
(4)设置页眉和页脚:在文件编辑软件中,点击“插入”菜单,选择“页眉和页脚”,设置页眉和页脚内容。
3. 文件的安全性设置和备份方法(1)设置文件属性:在Windows资源管理器中,右键点击目标文件,选择“属性”,在“常规”选项卡中,可以设置只读、隐藏等属性。
(2)设置文件夹权限:在Windows资源管理器中,右键点击目标文件夹,选择“属性”,在“安全”选项卡中,可以设置文件夹权限。
(3)备份文件:可以使用以下方法备份文件:a. 使用文件管理软件的备份功能;b. 将文件复制到外部存储设备,如U盘、硬盘等;c. 使用在线云存储服务,如百度网盘、Dropbox等。
《C语言程序设计》课程教学大纲一、课程教学目的本课程系统研究C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用C语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。
二、课程教学要求通过本课程的研究,应熟练掌握C语言中的基本知识、各种语句及程序控制结构,熟练掌握C语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用C语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。
三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3.四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。
难点:指针的使用、结构体链表的构造和使用及函数的参数传递。
五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。
六、课程教学内容第一章C言语概述1.教学内容(1)编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2) C语言的历史背景、特点;(3) C言语源步伐的格式和步伐结构;(4) C程序的上机步骤。
2.重、难点提醒(1)重点:掌握简单的C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门和对言语的理解。
第二章算法1.教学内容(1)算法的概念及特征;评价算法优劣的方法(时间和空间);(2)简单算法举例;(3)算法的表示(自然语言、流程图、N-S流程图);(4)结构化步伐设计的基本思想及基本步调。
2.重、难点提醒(1)重点:算法流程图三种基本结构(以后各章研究中使用流程图强化对步伐的理解);(2)难点:算法概念和对结构化步伐设计思想的理解。
实验六结构体和文件操作
实验目的:
1.掌握结构体、共用体类型变量的定义和使用
2.掌握结构体类型数组的定义及应用
3.掌握文件的打开、关闭、读、写等操作的函数
实验内容:
1.结构体操作。
题目学生成绩单制作
定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩,输出三门课程的平均分数最高的学生的学号、姓名及其平均分,再将10个学生按照平均分数从高到低进行排序,输出结果。
要求:用malloc函数动态分配内存。
提示:用指针方式对分配的内存中的数据进行读写。
设置一个指针数组,在比较和交换的时候交换指针数组中的对应指针,不用交换记录本身。
2. 从键盘输入一个字符串,将其中的大写字母全部转换成小写字母,然后
存入到文件名为“text”的磁盘文件中保存。
输入的字符串以“$”结束。
3.文件操作。
题目学生成绩文件管理:
将10个学生的相关数据,存入文件中,再从文件中读出,按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中,再从文件中读取第 2 ,4 ,6 ,8 ,10 个学生的数据。
再从控制台输入待查学生学号,输出其各科成绩及平均成绩。
实验要求:
运行程序时尽能考虑到输入的所有可能情况,检查输出的结果是否正确。
结构体实验总结结构体是一种用户自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。
在编程中,结构体非常有用,因为它使得数据的组织和存储更加灵活,方便进行操作和管理。
在本次实验中,我对结构体的使用进行了实验,并总结以下内容。
首先,在实验中,我学会了如何定义和声明一个结构体。
结构体的定义使用关键字“struct”,之后是结构体的名称和一对花括号,花括号中是结构体的成员。
每个成员有一个类型和一个名称,中间用逗号隔开。
通过这种方式,我可以定义具有不同成员的结构体,并使用它们来组织和管理数据。
其次,在实验中,我深入理解了结构体的作用和优点。
结构体的主要作用是将相关的数据组合在一起,形成一个逻辑上的整体。
这样可以方便地对这些数据进行处理,比如传递给函数或者进行操作。
另外,结构体还可以通过使用指针的方式来传递,以提高程序的效率。
结构体的优点在于可以使程序的逻辑更加清晰,代码更加简洁,提高了程序的可读性和可维护性。
然后,在实验中,我学习了如何使用结构体的成员。
在使用结构体的成员时,可以使用“.”操作符来访问成员。
需要注意的是,访问结构体成员需要通过结构体的实例来进行,所以要先创建一个结构体的实例,然后使用“.”操作符来访问成员。
这样,通过访问结构体的成员,我可以实现对结构体中数据的操作和处理。
此外,在实验中,我还了解了结构体的嵌套和指向结构体的指针。
结构体的嵌套是指一个结构体中可以包含另一个结构体作为成员。
通过结构体的嵌套,可以实现更复杂的数据组织和管理。
指向结构体的指针是指指针变量可以指向一个结构体的实例,通过指针可以直接操作和修改结构体中的数据。
结构体的嵌套和指向结构体的指针使得结构体的使用更加灵活和强大。
最后,在实验中,我通过多个实例的练习,巩固了对结构体的理解和应用。
练习包括定义和声明结构体,创建结构体的实例,访问和修改结构体的成员,以及使用结构体的嵌套和指针。
通过这些练习,我掌握了结构体的使用技巧,能够灵活地运用结构体来组织和管理数据。
c语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。
考虑到这一点,结构体在计算机程序设计中尤其重要。
因此,本实验的目的是练习使用C语言编程,设计并实现相应的结构体,来实现一定的功能。
二、实验目标
设计一个结构体struct book,包含书名、作者名、出版社、价格等字段,并实现以下功能:
(1)按照书名查找图书;
(2)将书籍信息以字符串格式输出;
(3)将书籍信息保存到文件中;
三、实验内容
1. 用C语言定义结构体struct book,包含书名字段name(char类型)、作者author(char类型)、出版社publisher(char类型)、价格price(float类型)等信息。
2. 创建一个函数findBook,输入参数为书名字符串,输出参数为书籍信息struct book。
该函数实现按照书名查找图书功能,若查找成功返回书籍信息,否则返回null。
四、实验结果
经过上述步骤,已经编写了相应的C语言程序实现了按照书名查找图书、将书籍信息以字符串格式输出、将书籍信息保存到文件中、从文件中读取书籍信息等功能。
五、总结
本实验中,使用C语言实现了结构体struct book的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。
因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。
一、实验目的1. 理解结构体的概念和作用。
2. 掌握结构体的定义、声明和初始化方法。
3. 熟悉结构体成员的访问和修改。
4. 学会结构体数组的定义、初始化和访问。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 结构体的定义和声明2. 结构体的初始化3. 结构体成员的访问和修改4. 结构体数组的定义、初始化和访问四、实验步骤1. 结构体的定义和声明```cppstruct Student {char name[50];int age;float score;};```2. 结构体的初始化```cppStudent stu1 = {"张三", 20, 90.5};```3. 结构体成员的访问和修改```cpp// 访问cout << "姓名:" << << endl; cout << "年龄:" << stu1.age << endl; cout << "成绩:" << stu1.score << endl; // 修改stu1.age = 21;stu1.score = 95.5;```4. 结构体数组的定义、初始化和访问```cpp// 定义结构体数组Student stuArray[3];// 初始化结构体数组stuArray[0] = {"李四", 19, 85.5}; stuArray[1] = {"王五", 20, 92.0}; stuArray[2] = {"赵六", 21, 88.5};// 访问结构体数组cout << "第一个学生的姓名:" << stuArray[0].name << endl;cout << "第一个学生的年龄:" << stuArray[0].age << endl;cout << "第一个学生的成绩:" << stuArray[0].score << endl;```五、实验结果1. 定义了一个名为Student的结构体,包含姓名、年龄和成绩三个成员变量。
c语言结构体实验报告实验目的:掌握C语言结构体的基本知识,能够使用结构体对多个变量进行分类管理。
实验内容:1.理解结构体的基本概念结构体是一种用户自定义的数据类型,它由多个不同类型的变量组成,每个变量称为结构体的成员。
2.定义结构体类型定义结构体类型需要使用struct关键字,格式如下:struct 结构体类型名{数据类型成员1;数据类型成员2;...};3.结构体变量的定义与初始化定义结构体变量时,可以像定义简单变量一样使用结构体类型名进行声明,然后使用“.”运算符来访问结构体成员。
结构体变量的初始化方式和普通变量一样,可以用赋值语句或者在定义时用大括号括起来的成员值列表进行初始化。
4.结构体作为函数参数结构体变量可以作为函数参数进行传递,当传递结构体变量时,实际上传递的是结构体变量的拷贝,因此函数在对结构体进行改变时不会影响原来的结构体变量。
5.结构体数组和普通数组一样,结构体数组也是一组相同类型的变量的集合,用于存储多个结构体变量。
在定义结构体数组时,可以使用类似普通数组的方式进行定义。
实验过程:我们按照上述内容进行C语言结构体的实验,具体过程如下:1.定义一个结构体类型,包括两个成员,分别为学生姓名和学生的成绩。
struct student{char name[20];float score;};2.定义并初始化一个学生结构体变量。
struct student s={"Tom",88.5};3.定义一个函数,用于输出学生的姓名和成绩。
void output(struct student s){printf("Name:%s Score:%.2f\n",,s.score);}4.定义一个结构体数组,用于存储多个学生的信息。
struct student stu[3]={{"Tom",88.5},{"Jerry",76},{"Tony",90}};5.调用output函数,输出学生的姓名和成绩。
C语言课程设计体育管理一、课程目标知识目标:1. 理解C语言在体育管理中的应用,掌握基本的数据结构和算法。
2. 学习使用C语言实现体育数据的存储、查询和统计功能。
3. 了解体育管理系统的基本框架和设计思路。
技能目标:1. 能够运用C语言编写简单的体育管理程序,如运动员信息录入、比赛成绩统计等。
2. 掌握基本的编程技巧,如变量定义、条件语句、循环语句等。
3. 能够分析体育管理需求,设计合适的算法和数据结构解决问题。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学生主动探索精神。
2. 培养学生的团队合作意识,学会与他人共同解决问题。
3. 增强学生对体育管理工作的认识,提高社会责任感。
课程性质:本课程为实践性较强的课程,以项目为导向,结合体育管理实际需求,培养学生运用C语言解决实际问题的能力。
学生特点:学生已具备一定的C语言基础,具有一定的编程能力,但对体育管理方面的知识了解较少。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重实践操作,提高学生的编程能力和解决问题的能力。
在教学过程中,注重启发式教学,引导学生主动思考,培养学生独立分析和解决问题的能力。
同时,关注学生的情感态度价值观培养,使学生在掌握知识技能的同时,形成积极向上的价值观。
二、教学内容1. C语言基础知识回顾:数据类型、运算符、控制语句(章节1.1-1.3)- 简要回顾C语言基础知识,为后续编程打下基础。
2. 函数与模块化编程:函数定义、调用、参数传递(章节2.1-2.3)- 学习如何将程序划分为多个函数,提高代码的可读性和可维护性。
3. 数组与字符串:数组定义、操作、字符串处理(章节3.1-3.3)- 掌握数组的使用,为处理体育数据(如运动员信息、比赛成绩)打下基础。
4. 指针与动态内存管理:指针概念、操作、动态内存分配(章节4.1-4.3)- 理解指针在编程中的重要性,为高效处理体育数据提供支持。
5. 结构体与文件操作:结构体定义、使用、文件读写(章节5.1-5.3)- 学习使用结构体存储复杂数据,以及如何读写文件,实现数据的持久化。
c语言实验原理实验原理:C语言是一种通用的高级编程语言,被广泛用于开发各种应用程序。
C语言实验原理主要包括以下内容:1. C语言的基本数据类型:C语言提供了各种基本数据类型,包括整型、浮点型、字符型等。
这些数据类型用于声明变量,存储和处理不同类型的数据。
2. 控制流:C语言提供了各种控制流语句,例如条件语句(if-else语句)、循环语句(for、while、do-while语句)和跳转语句(break、continue、goto语句)。
这些语句用于根据条件执行不同的代码块,或者重复执行一段代码。
3. 函数:C语言提供了函数的定义和调用机制。
函数是一段独立的代码块,用于执行特定的任务。
函数可以接受输入参数,并返回一个值。
4. 数组和指针:C语言支持数组和指针,用于存储和处理大量的数据。
数组是一组相同类型的数据的集合,而指针是指向内存地址的变量。
5. 结构体:C语言中可以使用结构体来创建自定义的数据类型。
结构体是一种将多个不同类型的数据组合在一起的方式。
6. 文件操作:C语言提供了对文件的读写操作。
通过打开文件、读取文件内容和写入文件等操作,可以实现文件的读写功能。
7. 动态内存分配:C语言支持动态内存分配,通过调用malloc 函数可以在程序运行时动态分配内存空间,提高内存利用率。
8. 编译和链接:C语言的源代码需要通过编译器进行编译,生成可执行文件。
编译过程包括词法分析、语法分析、语义分析等步骤。
链接器将编译生成的目标文件和库文件连接起来,生成最终的可执行文件。
9. 调试与错误处理:在程序开发过程中,经常会出现错误。
C 语言提供了调试工具和错误处理机制,可以帮助开发者发现和修复程序中的错误。
10. 代码优化:C语言代码的性能优化是提高程序执行效率的关键。
开发者可以通过优化代码结构、减少冗余代码、合理使用变量等方式来提高程序的性能。
通过理解和熟练掌握C语言的基本原理,开发者可以编写出高效、可靠的应用程序。
实验五:结构体的应用1. 实验目的与要求(1)学会结构体类型的声明与结构体变量与数组的定义;(2)理结构体指针作函数参数的参数传递原理;(3)理解利用链表组织数据的原理以及会链表的基本操作。
2. 实验内容(1)定义简单的结构体及相应变量的练习;(2)运用所定义的类型及变量编写简单的程序;(3)结构体与数组程序设计练习;(4)结构体与函数以及结构体与指针的应用练习;(5)链表的建立、插入、删除、输出等基本操作。
问题1:维护零件数据库链表1. 问题陈述设计一个程序用来维护仓库存储的零件信息的数据库,该数据库采用链表存储零件信息,包括零件的编号、名称及现有数量。
程序应支持下列操作:添加新零件编号、名称和初始的现货数量。
如果零件已经在数据库中,或者数据库已满,那么程序必须显示出错信息。
给定零件编号,显示出零件的名称和当前的现货数量。
如果零件编号不在数据库中,那么程序必须显示出错信息。
给定零件编号,改变现有的零件数量。
如果零件编号不在数据库中,那么程序必须显示出错信息。
显示列出数据库中全部信息的表格。
必须按照零件编号从小到大的顺序显示。
终止程序的运行。
2. 输入、输出描述输入:插入、搜索、更新、显示和退出等操作命令输出:对应操作命令的执行结果。
3. 演算示例整个程序采用以菜单方式驱动:当用户输入命令i 、s 、u 、p 、q 时分别执行插入、搜索、更新、显示和退出操作。
其中一种可能的执行结果:Enter operation code: iEnter part number: 528Enter part name: Disk driveEnter quantity on hand: 10Enter operation code: sEnter part number: 528Part name: Disk driveQuantity on hand: 10Enter operation code: sEnter part number: 914Part not found.Enter operation code: iEnter part number: 914Enter part name: Printer cableEnter quantity on hand: 5Enter operation code: uEnter part number: 528Enter change in quantity on hand: -2Enter operation code: sEnter part number: 528Part name: Disk driveQuantity on hand: 8Enter operation code: pPart Number Part Name Quantity on Hand528 Disk drive 8914 Printer cable 5Enter operation code: q4. 算法设计程序使用一个链表维护零件信息数据库,在此基础上实现插入、搜索、更新、显示和退出等操作。
C程序设计实验教案一、实验目的1. 掌握C程序的基本结构。
2. 学会使用C语言编写简单的输入输出程序。
3. 熟悉集成开发环境(如Visual Studio、Code::Blocks等)的使用。
二、实验内容1. C程序的基本结构(1)编写一个简单的C程序,输出“Hello, World!”。
(2)理解主函数、变量声明、函数体等基本概念。
2. 输入输出语句(1)使用scanf()函数输入用户输入的数字,并输出该数字的平方。
(2)使用printf()函数输出学生的姓名、成绩和等级。
三、实验步骤1. 打开集成开发环境,创建一个新的C项目。
2. 在主函数中编写输出“Hello, World!”的代码。
3. 编写输入用户输入的数字,并输出该数字的平方的代码。
4. 编写输出学生姓名、成绩和等级的代码。
5. 保存并运行程序,观察输出结果。
四、实验要求1. 每位同学独立完成实验,不抄袭他人代码。
2. 实验过程中,遇到问题要积极思考,可以请教同学或老师。
3. 实验完成后,对照实验目的,检查自己是否达到了预期目标。
五、实验评价1. 代码是否规范、可读性强。
2. 是否能熟练使用C语言的基本语法。
3. 是否能正确使用输入输出语句。
4. 是否能独立完成实验,解决问题。
六、实验六:控制流程(条件判断与循环)1. 实验目的理解C语言中的条件判断语句(if-else)。
掌握C语言中的循环结构(while、do-while)。
2. 实验内容编写程序实现成绩判断,根据分数输出等级(优秀、良好、及格、不及格)。
编写程序计算从1加到指定数字的和。
3. 实验步骤创建新项目,编写判断成绩的程序。
编写一个循环,用于输入分数,并判断等级。
编写另一个循环,用于计算1到指定数字的和。
运行程序,验证结果。
4. 实验要求代码应包含清晰的逻辑判断和循环控制。
要求程序能够处理用户输入的无效数据。
5. 实验评价判断语句和循环结构的正确使用。
程序对于不同输入的适应性和鲁棒性。
实验五数据的组织与处理(2)-结构一、实验目的:1. 理解结构体和结构数组的概念、定义和引用;2. 掌握用结构数据编写简单应用程序。
二、实验环境:一台PC机,虚拟机系统。
三、实验内容及步骤:1 用结构数组设计一个简单的通讯录管理应用程序。
要求实现以下功能:(1) 定义结构类型、结构数组及必要的全局变量。
〔2〕通讯录信息保存在文本文件中,为此,需编写两个文件读写函数:int read(); //将文本文件中的数据读到结构数组int write(); //将结构数组中的数据写到文本文件(3) 以菜单方式供用户选择所需操作:1 添加2 查询3 修改4 退出系统为此,需在主函数中编写显示菜单及根据用户选择调用相应功能项的代码:int main()(4〕实现相应的功能函数:int add(); //添加一条记录int search(); //根据查找某人的信息int modify(); //根据修改某人的信息#include<iostream>#include<fstream>#include<string>#include<cmath>#include <conio.h>using namespace std;int n=0,i;char name[20];struct birthday{int year;int month;int day;};struct friends{char names[20];char sex;char telephone[12];char QQ[12];char mail[12];struct birthday birth;};struct friends myfriend[10];int read(){ifstream fin("friend.txt");if(!fin){cout<<"文件打开失败"<<endl;fin.close();return 0;}fin>>n;for( i=0;i<n;i++){fin>>myfriend[i].names;cout<<" ";fin>>myfriend[i].sex;cout<<" ";fin>>myfriend[i].telephone;cout<<" ";fin>>myfriend[i].QQ;cout<<" ";fin>>myfriend[i].mail;cout<<" ";fin>>myfriend[i].birth.year;cout<<" ";fin>>myfriend[i].birth.month;cout<<" ";fin>>myfriend[i].birth.day;cout<<endl;}fin.close();return 1;}int write(){ofstream fout("friend.txt");if(!fout){cout<<"文件打开失败"<<endl;return 0;}for(i=0;i<n;i++){fout<<myfriend[i].names;fout<<myfriend[i].sex;fout<<myfriend[i].telephone;fout<<myfriend[i].QQ;fout<<myfriend[i].mail;fout<<myfriend[i].birth.year;fout<<myfriend[i].birth.month;fout<<myfriend[i].birth.day;}fout.close();return 1;}void display(){if (n==0){cout<<"文件中无信息"<<endl;return;}cout<<n<<endl;for(int i =0;i<n;i++){cout<<myfriend[i].names<<" ";cout<<myfriend[i].sex<<" ";cout<<myfriend[i].telephone<<" ";cout<<myfriend[i].QQ<<" ";cout<<myfriend[i].mail<<" ";cout<<myfriend[i].birth.year<<" ";cout<<myfriend[i].birth.month<<" ";cout<<myfriend[i].birth.day<<endl;}}int add(){ofstream fout("friend.txt");if(!fout){cout<<"文件打开失败"<<endl;return 0;}cout<<"请输入要增加的项"<<endl;cout<<"请输入"<<endl;cout<<"请输入性别"<<endl;cout<<"请输入号码"<<endl;cout<<"请输入QQ"<<endl;cout<<"请输入邮箱地址"<<endl;cout<<"请输入出生年月日"<<endl;cin>>myfriend[n].names;cin>>myfriend[n].sex;cin>>myfriend[n].telephone;cin>>myfriend[n].QQ;cin>>myfriend[n].mail;cin>>myfriend[n].birth.year;cin>>myfriend[n].birth.month;cin>>myfriend[n].birth.day;//fout<<myfriend[n].names<<myfriend[n].sex<<myfriend[n].telephone<<//myfriend[n].QQ<<myfriend[n].mail<<myfriend[n].birth.year<<myfriend[n].birth.month<<my friend[n].birth.day<<endl;n++;fout<<n<<endl;for(i=0;i<n;i++){fout<<myfriend[i].names<<" ";fout<<myfriend[i].sex<<" ";fout<<myfriend[i].telephone<<" ";fout<<myfriend[i].QQ<<" ";fout<<myfriend[i].mail<<" ";fout<<myfriend[i].birth.year<<" ";fout<<myfriend[i].birth.month<<" ";fout<<myfriend[i].birth.day<<endl;}fout.close();return 1;}int bijiao(char *a,char *b){int k,t=1;k=strlen(a);for(int s=0;s<k;s++)if(a[s]!=b[s])t=0;return t;}int modif(){int k;char name[20];cout<<"请输入要修改的人的名字"<<endl;cin>>name;for(i=0;i<n;i++){if(bijiao(name,myfriend[i].names)){cout<<"names\t"<<myfriend[i].names<<endl;cout<<"sex\t"<<myfriend[i].sex<<endl;cout<<"telephone\t"<<myfriend[i].telephone<<endl;cout<<"QQ\t"<<myfriend[i].QQ<<endl;cout<<"mail\t"<<myfriend[i].mail<<endl;cout<<"year.month.day\t"<<myfriend[i].birth.year<<myfriend[i].birth.month<<myfriend[i]. birth.day<<endl;cout<<"s"<<endl;cout<<"2.sex"<<endl;cout<<"3.telephone"<<endl;cout<<"4.QQ"<<endl;cout<<"5.mail"<<endl;cout<<"6.birthday"<<endl;cout<<"请输入你要修改的项"<<endl;cin>>k;switch(k){case 1:{cin>>myfriend[i].names; write();break;}case 2:{cin>>myfriend[i].sex;write();break;}case 3:{cin>>myfriend[i].telephone;write();break;}case 4:{cin>>myfriend[i].QQ;write();break;}case 5:{cin>>myfriend[i].mail;write();break;}case 6:{cin>>myfriend[i].birth.year;cin>>myfriend[i].birth.month;cin>>myfriend[i].birth.day;write();break;}default:cout<<"输入错误请再输一遍"<<endl;}}}return NULL;}void search(){char num[20];cout<<"请输入要找的人的名字"<<endl;cin>>num;for(i=0;i<n;i++){if(bijiao(num,myfriend[i].names)){cout<<"names\t"<<myfriend[i].names<<endl;cout<<"sex\t"<<myfriend[i].sex<<endl;cout<<"telephone\t"<<myfriend[i].telephone<<endl;cout<<"QQ\t"<<myfriend[i].QQ<<endl;cout<<"mail\t"<<myfriend[i].mail<<endl;cout<<"year.month.day\t"<<myfriend[i].birth.year<<myfriend[i].birth.month<<myfriend[i]. birth.day<<endl;return;}}cout<<"Can not find your friend!"<<endl;}int main(){read();display();int choic;do{cout<<"1.增加"<<endl;cout<<"2.修改"<<endl;cout<<"3.查找"<<endl;cout<<"4.退出"<<endl;cout<<"请输入选择"<<endl;cin>>choic;switch(choic){case 1:add(); {break;}case 2:modif();{break;}case 3:search();{break;}case 4:return 1;}}while(choic!=4);return 0;}四、实验小结:。
《C语言程序设计》实验指导书软工2010级2班m a oS W U实验环境Windows,Visual C++实验目录实验六文件操作实验目的1.掌握文件、缓冲文件系统、文件指针的概念。
2.学会使用缓冲文件系统中的文件打开、关闭、读、写等文件操作函数。
实验内容1、从键盘输入一个字符串,然后将其保存到磁盘上的文件file1.txt 上,该文件打开时用文本模式。
2、修改上题的程序:输入若干个字符串保存到file2.txt中,并将其显示在显示器上。
再回到Windows,用记事本程序打开,比较两者显示的内容。
3、有如下结构struct student{char name[8]; /*姓名*/long num; /*学号*/int score; /*成绩*/};输入班级名称,再用循环语句输入5位同学的信息(姓名、学号、成绩),并以二进制模式保存到文件student.stu中。
设定.stu格式文件的结构如下:char classN[20]; /*班级名称*/int N; /*该文件中学生的个数,在本题中是5*/学生1的信息/*参考上述结构体*/学生2的信息学生3的信息学生4的信息学生5的信息再编写一个函数将上面的文件以二进制形式打开,读出并显示在屏幕上。
再回到Windows,用记事本程序将该文件强行打开,比较两者显示的内容有什么区别。
思考其原因。
4、思考题。
上网搜索.bmp图像文件的格式,想一下,acdsee这些软件读取并显示.bmp图像的原理是什么。
5、思考题。
上网搜索PE模式的.exe文件的结构。
思考病毒程序是怎么感染.exe文件的。
6、思考题。
教材上的文件操作函数以及其它函数都是标准C语言提供的库函数(位于.lib文件中),Windows也为程序员提供了大量函数(API)。
两者有什么不同?。
实验5 结构体、指针与文件程序填空1.指针数组题目描述:从键盘任意输入一个整型表示的月份值,用指针数组编程输出该月份的英文表示,若输入的月份值不在1~12之间,则输出“Illegal month”。
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码:#include<stdio.h>int main(){char *monthName[13]={"Illegal month","January","February","March","April","May","June","July","August","September","October","November","December"};int m;printf("输入一个月份值(整型表示):");scanf("%d",&m);if(__(1)__)printf("%s\n",monthName[0]);elseprintf("%s\n",__(2)__);return 0;}2.二维数组作为函数参数题目描述:编写一个函数,用来求出一个n×n阶矩阵的转置矩阵。
函数原型为void Transpose(int a[][N],int n);以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码:#include<stdio.h>#include<stdlib.h>#define N 100int main(){void Transpose(int a[][N],int n);int d[N][N];int n,i,j;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)d[i][j]=(int)rand()%100;printf("原来的矩阵为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",d[i][j]);printf("\n");}Transpose(__(1)__,n);printf("转置后的矩阵为:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",d[i][j]);printf("\n");}return 0;}void Transpose(int a[][N],int n){void Swap(int *pa,int *pb);int i,j;for(i=0;i<n;i++)for(j=0;j<i;j++)Swap(__(2)__);}void Swap(int *pa,int *pb){int t;t=*pa;__(3)__;*pb=t;}3.结构体题目描述:定义一个复数MyComplex结构体类型,它包含实部real和虚部imag 两个个成员,并且可以进行复数的加减运算。
C语言结构体与文件在C语言中,结构体(struct)是一种用户自定义的数据类型,它允许我们将不同数据类型的变量组合在一起,形成一个新的数据类型,用于表示具有多个属性的对象。
在处理数据时,我们经常需要将结构体数据保存在文件中,这时候就需要使用结构体与文件相关的操作。
一、结构体的定义和使用定义结构体的语法格式为:```struct 结构体名数据类型成员1;数据类型成员2;数据类型成员3;...};```例如,定义一个表示学生的结构体类型:```struct studentint age;char name[20];float score;};```我们可以使用该结构体类型创建学生对象:```struct student stu1;stu1.age = 18;strcpy(, "Tom");stu1.score = 89.5;```二、结构体与文件的操作C语言提供了一些函数用于结构体与文件之间的读写操作,主要包括以下几个函数:1. fopen函数: 用于打开一个文件,并返回一个指向该文件的文件指针。
它的原型为:```FILE *fopen(const char *filename, const char *mode);```其中,参数filename是字符串,指定要打开的文件名;参数mode是字符串,指定文件的打开模式。
常用的模式有:-"r":以只读方式打开文件-"w":以写入方式打开文件,如果文件不存在,则创建一个新的文件,如果文件存在,则清空文件内容-"a":以追加写入方式打开文件,如果文件不存在,则创建一个新的文件- "rb":"r"模式下的二进制文件读取- "wb":"w"模式下的二进制文件写入例如,打开一个名为"test.txt"的文件,并以只读的方式打开:```FILE *fp = fopen("test.txt","r");if (fp == NULL)printf("文件打开失败\n");exit(1);```2. fscanf函数和fprintf函数:用于在结构体变量与文件之间进行读写操作。
c语言结构体和文件原理C语言中的结构体(struct)是一种用户自定义的数据类型,它允许将多个不同类型的数据组合在一起形成一个复合数据类型。
结构体可以被用来表示一个复杂的数据对象,例如一个学生记录、一个日期等。
在C语言中,文件是通过文件指针来进行操作的。
文件指针是一个指向文件的指针变量,通过它可以对文件进行打开、读写、关闭等操作。
文件指针的定义如下:```cFILE fp;```其中,`FILE`是一个预定义的结构体类型,它包含了与文件相关的信息,如文件指针的位置、缓冲区等。
`fp`是一个指向`FILE`类型的指针变量,可以通过它来操作文件。
要打开一个文件,需要使用C标准库函数`fopen()`,它的定义如下:```cFILE fopen(const char filename, const char mode);```其中,`filename`是要打开的文件名,`mode`是文件的打开方式,如只读、写入等。
如果文件打开成功,`fopen()`函数会返回一个指向该文件的文件指针;如果打开失败,则返回NULL。
要对文件进行读写操作,可以使用C标准库函数`fread()`、`fwrite()`、`fscanf()`、`fprintf()`等。
这些函数都需要一个文件指针作为参数,以便知道要操作哪个文件。
在完成对文件的操作后,需要使用C标准库函数`fclose()`关闭文件。
它的定义如下:```cint fclose(FILE fp);```其中,`fp`是要关闭的文件的文件指针。
如果关闭成功,`fclose()`函数会返回0;如果关闭失败,则返回EOF。
实验5结构体与文件处理(上机调试运行)
1.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中,请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(只有一个最高分)。
2.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,功能是:按照分数的高低排列学生的记录,高分在前。
并将数据存入文件中。
3.给定程序的功能:从键盘输入若干行文本(每行不超过80个字符),写的文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText 实现。
二.实验目的
1.掌握结构体的概念及其数据结构
2.有效应用结构体进行二维表格编程
3.掌握C语言中文件的概念及其数据结构
4.熟悉文件的读写操作
实验4 运用指针类型及函数编程练习
一.实验要求
本实验包含三个程序
1.fun函数的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数。
并把该整数中各位上最大的数字值作为函数值返回。
例如,若输入30800,则零的个数为3,各位上数字值最大的是8。
2.fun函数的功能:用指针的形式比较两个字符串的的长度,将长的那个字符串的首地址作为函数值返回。
3.给定函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
偶数在主函数中定义。
二.实验目的
1.掌握指针的概念及其运算
2.掌握以指针作为形参的函数调用及用函数返回一个指针
3.掌握指针与字符串之间的运算关系。