码迷,mamicode.com
首页 > 其他好文 > 详细

实验七

时间:2019-06-23 22:43:18      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:ret   object   tput   sum   固定   ascii   min   style   char   

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代码训练,对本章的知识有了更深的认识。

实验七

标签:ret   object   tput   sum   固定   ascii   min   style   char   

原文地址:https://www.cnblogs.com/fanlock/p/11074534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!