实验七
Posted fanlock
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验七相关的知识,希望对你有一定的参考价值。
part 1:
1、观察两次的运行结果,更换后运行结果相同
2、对比验证性实验3和验证性实验4的程序源码及运行结果
文本文件只能以字符形式储存变量。且有固定长度。如ASCII码每条数据(每个字符)都是1个字节。
二进制文件就是把内存中的数据按其在内存中存储的形式原样输出到磁盘中存放,即存放的是数据的原形式,无固定长度。
part2:
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 const int N = 10; 5 // 定义结构体类型struct student,并定义其别名为STU 6 typedef struct student 7 long int id; 8 char name[20]; 9 float objective; /*客观题得分*/ 10 float subjective; /*操作题得分*/ 11 float sum; 12 char level[10]; 13 STU; 14 // 函数声明 15 void input(STU s[], int n); 16 void output(STU s[], int n); 17 void process(STU s[], int n); 18 int main() 19 STU stu[N]; 20 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\\n", N); 21 input(stu, N); 22 printf("\\n对考生信息进行处理: 计算总分,确定等级\\n"); 23 process(stu, N); 24 printf("\\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\\n"); 25 output(stu, N); 26 return 0; 27 28 // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分 29 void input(STU s[], int n) 30 FILE *fp; 31 int i; 32 fp=fopen("examinee.txt","r"); 33 if(!fp) 34 printf("fail to open examinee.txt\\n"); 35 exit(0); 36 37 for(i=0;i<n;i++) 38 fscanf(fp,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); 39 40 fclose(fp); 41 42 // 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 43 // 不仅输出到屏幕上,还写到文本文件result.txt中 44 void output(STU s[], int n) 45 FILE *fpp; 46 int i; 47 fpp=fopen("result.txt","w"); 48 if(!fpp) 49 printf("fail to open result.txt\\n"); 50 exit(0); 51 52 for(i=0;i<n;i++) 53 printf("%ld %s %lf %lf %lf %s\\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);//输出至屏幕 54 fprintf(fpp,"%ld %s %lf %lf %lf %s\\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);//输出至文件 55 56 fclose(fpp); 57 58 // 对考生信息进行处理:计算总分,排序,确定等级 59 void process(STU s[], int n) 60 int i,j; 61 STU t; 62 for(i=0;i<n;i++) 63 s[i].sum=s[i].objective+s[i].subjective; 64 65 for(i=0;i<n;i++) 66 for(j=0;j<n-1-i;j++) 67 if(s[j].sum<s[j+1].sum) 68 t=s[j]; 69 s[j]=s[j+1]; 70 s[j+1]=t; 71 72 73 74 strcpy(s[0].level,"优秀"); 75 for(i=1;i<=4;i++) 76 strcpy(s[i].level,"合格"); 77 78 for(i=5;i<=9;i++) 79 strcpy(s[i].level,"不合格"); 80 81
实验总结和体会:
1、对清楚了二进制文件和文本文件区别。
2、通过part2代码训练,对本章的知识有了更深的认识。
以上是关于实验七的主要内容,如果未能解决你的问题,请参考以下文章