资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
附件(四)本文档仅限于学习交流,禁止抄袭。程序本文档仅限于学习交流,禁止抄袭。程序 结果截图非本人信息,请自行修改。结果截图非本人信息,请自行修改。 深深 圳圳 大大 学学 实实 验验 报报 告告课程名称:课程名称: C C 程序设计程序设计 实验名称:实验名称: LabLab AssignmentAssignment 4 4 学学 院:院: 信息工程学院信息工程学院 专专 业:业: 指导教师:指导教师: 报报 告告 人:人: 报告人学号:报告人学号: 班级:班级: 实实 验验 时时 间:间: 报告提交时间:报告提交时间: 教务处制教务处制共 15 页 第 2 页一、实验目的与要求一、实验目的与要求1.实验目的:实验目的:(1) 进一步掌握 C 语言的编程方法;进一步掌握数组的定义与使用;进一步掌握函数的定义和函数调用方法;(2) 学习和掌握结构体的定义和使用方法。(3) 学习和掌握文件的基本输入输出方法。2.实验要求:实验要求:编写一个通过键盘或文件输入学生信息,并将学生信息输出到文件和屏幕的程序。1) 定义一个 student 结构体如下:struct student char name20; /姓名float score4; /四门功课的成绩float average; /四门功课的平均成绩;其中,name 中存放同学的姓名;score4数组中存放同学的英语、数学、物理、化学成绩;average 中存放上述四门功课的平均成绩。2) 编写下面六个函数。其中 6 个函数中的后 2 个函数是文件操作函数。函数的具体要求:void inputFromKeyboard(struct student stu, int num)从键盘输入学生信息的函数。stu 为结构体数组,num 为数组中元素的个数。void outputToScreen(struct student stu, int num)将学生信息输出到屏幕的函数。stu 为结构体数组,num 为数组中元素的个数。void averageScore(struct student stu, int num)计算学生平均成绩的函数。stu 为结构体数组,num 为数组中元素的个数。void sortByAverageScore(struct student stu, int num)根据学生的平均成绩对学生信息整体排序的函数。stu 为结构体数组,num 为数组中元素的个数。共 15 页 第 3 页void inputFromFile(struct student stu, int num, FILE *fp)从文件输入学生信息的函数。stu 为结构体数组,num 为数组中元素的个数,fp 为以“读”方式打开的文本文件的指针。void outputToFile(struct student stu, int num, FILE *fp)将学生信息输出到文件的函数。stu 为结构体数组,num 为数组中元素的个数,fp 为以“写”方式打开的文本文件的指针。3) 编写主函数对你所编写的上述六个函数进行调用验证。主函数可分下面几个阶段编写:第 1 个阶段 (可参考在第 11 章的实验作业):定义 3 个学生的结构体数组,编写函数 inputFromKeyboard、outputToScreen 和averageScore。调用函数 inputFromKeyboard 由键盘输入学生的信息( 姓名、英语、数学、物理、化学成绩),调用函数 outputToScreen 将输入的信息显示到屏幕上;上述两个函数调试正确后,编写函数 averageScore 并调用,计算每个同学的平均成绩,然后调用函数 outputToScreen,将计算后的数据信息显示到屏幕上第 2 个阶段:编写函数 outputToFile。调用函数 inputFromKeyboard 由键盘输入 3 个学生的信息( 姓名、英语、数学、物理、化学成绩),并以文本“写”方式打开文本 student1.txt 文件,调用函数 outputToFile,将这 3 个同学的信息存入 student1.txt 文本文件,关闭该文件;使用 windows XP 的“记事本”文本编辑器打开文本文件 student1.txt 查看是否正确。其中,在程序运行后文本文件 student1.txt 中可能的内容及格式为:刘翔 88.0 76.0 78.0 70.0 -107374176.0姚明 98.0 67.0 79.0 65.0 -107374176.0李娜 89.0 79.0 85.0 79.0 -107374176.02第 3 个阶段:编写函数 inputFromFile。将上面两个阶段中调用函数 inputFromKeyboard 的语句变成注释行。以文本“读”方式打开文本 student1.txt 文件,调用函数 inputFromFile,将这 3 个同学的信息读入并存放到学生信息结构体数组中,关闭该文件;调用函数 averageScore 计算每个同学的平均成绩,并将平均成绩存储在结构数组的相应位置处。共 15 页 第 4 页调用函数 outputToScreen 将学生的完整的信息显示到屏幕上;以文本“写”方式打开文本 student2.txt 文件,调用函数 outputToFile,将这 3 个同学的计算有平均成绩的所有信息存入 student2.txt 文本文件,关闭该文件;在这段程序运行后文本文件 student2.txt 中可能的内容及格式为:刘翔 88.0 76.0 78.0 70.0 78.0姚明 98.0 67.0 79.0 65.0 77.3李娜 89.0 79.0 85.0 79.0 83.0第 4 个阶段,完整调试 6 个函数:编写函数 sortByAverageScore。在第 3 阶段编写的程序段后面添加下面的语句:调用函数 sortByAverageScore 根据学生的平均成绩对学生信息整体排序。调用函数 outputToScreen 将学生的完整的信息显示到屏幕上;以文本“写”方式打开文本 student3.txt 文件,调用函数 outputToFile,将排序后的这3 个同学的所有信息存入 student3.txt 文本文件,关闭该文件;在程序运行后文本文件 student3.txt 中可能的内容及格式为:李娜 89.0 79.0 85.0 79.0 83.0刘翔 88.0 76.0 78.0 70.0 78.0姚明 98.0 67.0 79.0 65.0 77.3结束主程序。二、实验步骤与过程二、实验步骤与过程:1.试验流程图设计:试验流程图设计:共 15 页 第 5 页开始定义一个结构体, 类型是student编写 inputStudentInform 函数,用于输入学生 的信息编写outputToFile函 数,用于向文件中输 入数据编写 outputStudentInfo rm函数,用于输出 学生的信息编写inputFromFile 函数,用于向文件 中读取数据编写 sortByAverageScore 函数,用于对学生的 成绩排序写主函数,调用 inputStudentInform和 函outputStudentInform 数并从键盘输入和输出编写averageScore 函数,用于计算学 生的平均成绩调用outputToFile函数, 用于将输入的数据存入 student1.txt文件中先注释掉上面的代码,然后调用inputFromFile和 outputStudentInform函数,用于从student1.txt 文件中读取上一步骤中输入的数据和输出数据调用averageScore函数和outputStudentInform函数 用于计算各位同学的平均成绩,然后将新的数据写 入到student2.txt文件中调用sortByAverageScore函数和 outputStudentInform,分别用于对成绩排序和将 新的数据写入到student3.txt文件中结束2.本实验的代码:本实验的代码:#include “stdio.h“#include“stdlib.h“#define NUM 4struct student char name20; int score4;float average;void inputStudentInform(struct student stu,int num)共 15 页 第 6 页int k = 0;for(;k stuj.average)k=j;if(k!=j)temp = stui;stui=stuk;stuk=temp;共 15 页 第 9 页void main( )FILE *fp1,*fp2,*fp3;struct student stuNUM;/*-输入学生的成绩数据并存入输入学生的成绩数据并存入 student1 文件中文件中-*/inputStudentInform(stu,NUM);fp1 = fopen(“student1.txt“,“w+“);if(fp1 = NULL)printf(“打不开打不开 student1 文件文件:n“);exit(0);outputToFile(stu,NUM,fp1);fclose(fp1);/*-打开打开 student 文件并计算各位同学成绩的平均数并将新的数据存入文件并计算各位同学成绩的平均数并将新的数据存入 student2 文件文件中中-*/fp1 = fopen(“student1.txt“,“r+“);if(fp1 = NULL)printf(“不存在不存在 student1 文件文件:n“);exit(0);inputFromFile(stu,NUM,fp1);fclose(fp1);averageScore(stu,NUM);outputStudentInform(stu,NUM);共 15 页 第 10 页fp2 = fopen(“student2.txt“,“w“);if(fp2 = NULL)printf(“打不开打不开 student2 文件文件:n“);exit(0);outputToFile(stu,NUM,fp2);fclose(fp2);/*-将各位同学按照平均成绩由小到大的顺序排列并将新的数据存入将各位同学按照平均成绩由小到大的顺序排列并将新的数据存入 student3 文件文件中去中去-*/sortByAverageScore(stu,NUM);outputStudentInform(stu,NUM);fp3 = fopen(“student3.txt“,“w“);if(fp3 = NULL)printf(“打不开打不开 student3 文件文件:n“);exit(0);outputToFile(stu,NUM,fp3);fclose(fp3);共 15 页 第 11 页三、实验结果:、实验结果:共 15 页 第
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号