I-AM-Y

导航

第七次实验

任务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;
        }
    }
    }

 

实验结论:把一些小的细节联合起来,结果联合出了无数错误。。。

每一个部分,即使是一些看似相似的部分,都有着他的功能。。。。

 

posted on 2020-12-29 16:56  I-AM-Y  阅读(161)  评论(2编辑  收藏  举报