深圳大学C程序设计LabAssignment4实验报告_第1页
深圳大学C程序设计LabAssignment4实验报告_第2页
深圳大学C程序设计LabAssignment4实验报告_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附件(四)本文档仅限于学习交流,禁止抄袭。程序结果截图非本人信息,请自行修改。深圳大学实验报告课程名称:C 程序设计实验名称:Lab Assignment 4学院:信息工程学院专业:指导教师:报告人:报告人学号:班级:实验时间:报告提交时间:教务处制一、实验目的与要求1.实验目的:(1) 进一步掌握C 语言的编程方法;进一步掌握数组的定义与使用;进一步掌握函数的定义和函数调用方法;(2) 学习和掌握结构体的定义和使用方法。(3) 学习和掌握文件的基本输入输出方法。2.实验要求:编写一个通过键盘或文件输入学生信息,并将学生信息输出到文件和屏幕的程序。1) 定义一个 student 结构体如下:s

2、truct student char name20; / 姓名float score4; / 四门功课的成绩float average; / 四门功课的平均成绩;其中, name 中存放同学的姓名;score4 数组中存放同学的英语、数学、物理、化学成绩; average 中存放上述四门功课的平均成绩。2) 编写下面六个函数。其中 6 个函数中的后 2 个函数是文件操作函数。函数的具体要求:void inputFromKeyboard(struct student stu, int num)从键盘输入学生信息的函数。stu 为结构体数组,num 为数组中元素的个数。void outputToS

3、creen(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 为数组中元素的个数。void inputFromFile(struct student stu, int nu

4、m, FILE *fp)从文件输入学生信息的函数。stu 为结构体数组, num 为数组中元素的个数,fp为以“读”方式打开的文本文件的指针。void outputToFile(struct student stu, int num, FILE *fp)将学生信息输出到文件的函数。stu 为结构体数组,num 为数组中元素的个数,fp为以“写”方式打开的文本文件的指针。3) 编写主函数对你所编写的上述六个函数进行调用验证。主函数可分下面几个阶段编写:第 1 个阶段 (可参考在第 11 章的实验作业 ):定 义 3 个 学生 的 结构体 数 组 , 编 写 函 数 inputFromKeyboa

5、rd 、 outputToScreen 和averageScore。调用函数 inputFromKeyboard 由键盘输入学生的信息 ( 姓名、英语、数学、物理、化学成绩 ),调用函数 outputToScreen 将输入的信息显示到屏幕上;上述两个函数调试正确后,编写函数 averageScore并调用,计算每个同学的平均成绩,然后调用函数 outputToScreen,将计算后的数据信息显示到屏幕上第 2 个阶段:编写函数outputToFile 。调用函数inputFromKeyboard 由键盘输入3 个学生的信息 ( 姓名、英语、数学、物理、化学成绩 ),并以文本“写”方式打开文本

6、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 。将上面两个阶段中调用函数

7、inputFromKeyboard 的语句变成注释行。以文本“读”方式打开文本student1.txt 文件,调用函数inputFromFile ,将这 3 个同学的信息读入并存放到学生信息结构体数组中,关闭该文件;调用函数averageScore计算每个同学的平均成绩,并将平均成绩存储在结构数组的相应位置处。调用函数outputToScreen 将学生的完整的信息显示到屏幕上;以文本“写”方式打开文本student2.txt 文件,调用函数outputToFile ,将这 3 个同学的计算有平均成绩的所有信息存入 student2.txt 文本文件,关闭该文件;在这段程序运行后文本文件 st

8、udent2.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 个

9、同学的所有信息存入 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.试验流程图设计:开始编写编写 outputToFile函inputStudentInform定义一个结构体,数,用于向文件中输函数,用于输入学生类型是student入数据的信息编写 averageScore编写inputFromFile编写outputStudentIn

10、fo函数,用于计算学函数,用于向文件rm 函数,用于输出生的平均成绩中读取数据学生的信息写主函数,调用inputStudentInform和函 outputStudentInform数并从键盘输入和输出调用outputToFile函数,用于将输入的数据存入student1.txt文件中先注释掉上面的代码,然后调用inputFromFile和outputStudentInform函数,用于从student1.txt文件中读取上一步骤中输入的数据和输出数据编写sortByAverageScore函数,用于对学生的成绩排序调用averageScore函数和outputStudentInform函数用

11、于计算各位同学的平均成绩,然后将新的数据写入到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)int

12、 k = 0;for(;k < num;k +)printf(" 请输入第 %d 个同学的姓名:",k + 1);gets();fflush(stdin);printf("请输入第%d个同学的英语成绩:",k + 1);scanf("%d",&stuk.score0);printf("请输入第%d个同学的数学成绩:",k + 1);scanf("%d",&stuk.score1);printf("请输入第%d个同学的物理成绩:",k +

13、 1);scanf("%d",&stuk.score2);printf("请输入第%d个同学的化学成绩:",k + 1);scanf("%d",&stuk.score3);fflush(stdin);void averageScore(struct student stu, int num)int k = 0;for(;k < num;k +)stuk.average = 0;for(int i = 0; i < 4;i +)stuk.average += stuk.scorei;stuk.average

14、/= 4.0;void outputStudentInform(struct student stu, int num)int k = 0;for(;k < num;k +)printf("n第 %d 个同学的信息如下:n",k +1);printf(" 姓名: %sn",);printf(" 英语成绩: %dn",stuk.score0);printf(" 数学成绩: %dn",stuk.score1);printf(" 物理成绩: %dn",stuk.score2);

15、printf(" 化学成绩: %dnn",stuk.score3);printf(" 平均成绩: %.2fnn",stuk.average);void outputToFile(struct student stu, int num,FILE *fp)int k;for(k = 0; k < num; k +)fprintf(fp,"%s",);fprintf(fp,"t%d",stuk.score0);fprintf(fp,"t%d",stuk.score1);fpri

16、ntf(fp,"t%d",stuk.score2);fprintf(fp,"t%d",stuk.score3);fprintf(fp,"t%f",stuk.average);fprintf(fp,"n");fclose(fp);void inputFromFile(struct student stu, int num,FILE *fp)int k;for(k = 0; k < num; k +)fscanf(fp,"%s",&);fscanf(fp,"

17、%d",&stuk.score0);fscanf(fp,"%d",&stuk.score1);fscanf(fp,"%d",&stuk.score2);fscanf(fp,"%d",&stuk.score3);fscanf(fp,"%f",&stuk.average);void sortByAverageScore(struct student stu, int num)int k=0;struct student temp;for(int i=0;i<num

18、-1;i+)k=i;for(int j=i+1;j<num;j+)if(stuk.average>stuj.average)k=j;if(k!=j)temp = stui;stui=stuk;stuk=temp;void main( )FILE *fp1,*fp2,*fp3;struct student stuNUM;/*- 输入学生的成绩数据并存入student1 文件中 -*/inputStudentInform(stu,NUM);fp1 = fopen("student1.txt","w+");if(fp1 = NULL)printf(

19、" 打不开 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(

20、stu,NUM);outputStudentInform(stu,NUM);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);fp

21、3 = fopen("student3.txt","w");if(fp3 = NULL)printf(" 打不开 student3 文件 :n");exit(0);outputToFile(stu,NUM,fp3);fclose(fp3);三、实验结果:四、实验结果与数据分析:1.首先,这次实验让我进一步掌握 C 语言的编程方法; 进一步掌握数组的定义与使用; 进一步掌握函数的定义和函数调用方法;学习和掌握结构体的定义和使用方法以及文件的基本输入输出方法。2.其次,这次实验锻炼了我的逻辑思维能力,第一次写完代码之后心里很得意,但是运行之后我就发现不用管我输入什么坐标,结果都是“您在A 区”,这令我很郁闷,因为代码编译没有错误啊。后来我发现有几句判断的语句我放的位置不对, 我就把不同程序段的代码调换了一下顺序就好了。 通过这个错误我体会到了结构化程序设计语言的执行特点了:从上往下依次执行。3.我认识到了写代码的重要性,例如空格,空行,缩进等细节。因为做到了这些细节,程序一旦发生了错误,修改的时候很容易下手,一目了然,别人看着也舒服。4.实验中遇到了一个问题:每当我在主函数中注释掉inputStudentInform(stu,NUM) 函数,然后打开inputFromFil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论