第七次实验
任务3
屏幕输出正确按照分数降序排序的信息,在当前路径下,同时生成了file3.dat
数据正确且直观
任务4
子任务1)
屏幕上输出了正确的按照分数由高到低排序的学生信息,同时在当前路径下生成二进制文件file4.dat,里面的数据不直观可读
子任务2)
#include <stdio.h> #include <stdlib.h> #define N 20 typedef struct student{ int num; char name[20]; int score; }STU; int main(){ STU st[N]; FILE *fp; int i=0; fp=fopen("file4.dat","r"); if(!fp){ printf("fail to open file4.dat\n"); exit(0); } for(i=0;i<N;i++){ printf("%-6d%-10s%3d",st[i].num,st[i].name,st[i].score); } fclose(fp); return 0; }
任务5
#include <stdio.h> #include <stdlib.h> #include <string.h> const int N=10; typedef struct student{ long int id; char name[20]; float objective; float subjective; float sum; char level[10]; }STU; void input(STU s[],int n); void output(STU s[],int n); void process(STU s[],int n); int main(){ STU stu[N]; printf("录入%d个考生信息:准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n",N); input(stu,N); printf("\n对考生信息进行处理:计算总分,确定等级\n"); process(stu,N); printf("\n打印考生完整信息:准考证,姓名,客观题得分,操作题得分,总分,等级\n"); output(stu,N); return 0; } //从examinee.txt读入信息 void input(STU s[],int n){ FILE *fin,*fout; STU st[N]; int i; fin=fopen("examinee.txt","r"); if(!fin){ printf("\nfail to open examinee.txt\n"); exit(0); } for(i=0;i<N;i++) fscanf(fin,"%ld %s %f %f ",&st[i].id,&st[i].name,&st[i].objective,&st[i].subjective); fclose(fin); } //输出完整信息,不仅输出到屏幕上,还写入到文本文件result.txt中 void output(STU s[],int n) { FILE *fin,*fout; fout=fopen("result.txt","w"); if(!fout){ printf("fail to open result.txt\n"); exit(0) ; } STU st[N]; int i; for(i=0;i<N;i++){ printf("%ld%s%f%f%f%s",st[i].id,st[i].name,st[i].objective,st[i].subjective,st[i].sum,st[i].level); fprintf(fout,"%ld%S%f%f%s\n",st[i].id,st[i].name,st[i].objective,st[i].subjective,st[i].sum,st[i].level); } fclose(fout); } //考生信息处理,计算总分,排序,确定等级 void process(STU s[],int n) { STU temp; int i,j; for(i=0;i<n;i++) s[i].sum=s[i].subjective+s[i].objective; for(i=0;i<n;i++){ if(s[i].sum>=n*0.1) strcpy(s[i].level,"优秀"); else if(s[i].sum<0.5*n) strcpy(s[i].level,"优秀"); else strcpy(s[i].level,"合格"); } for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) {if (s[j].sum<s[j+1].sum){ temp=s[j].sum; s[j]=s[j+1].sum; s[j+1].sum=temp; } } }
实验结论:把一些小的细节联合起来,结果联合出了无数错误。。。
每一个部分,即使是一些看似相似的部分,都有着他的功能。。。。