实验7

3.实验任务3

在屏幕上正确输出了按分数由高→低排序的信息,在当前路径下,生成了文本文件file3.dat

用记事本程序打开文件file3.dat,里面的数据信息正确,并且直观可读

4.实验任务4

子任务1

在屏幕上正确输出了按分数由高到底排序的学生信息  在当前路径下,生成了二进制文件file4.dat  用记事本程序打开文件file4.dat后,里面的数据信息不直观可读

子任务2

#include<stdio.h>
#include <stdlib.h>
#define N 10
// 定义一个结构体类型STU 
typedef struct student {
    int num;
    char name[20];
    int score;
}STU;

int main(){
    
    FILE *fin, *fout; // 定义文件类型指针
    STU st[N];
    int i;
    
    fin = fopen("file4.dat", "rb"); // 以只读文本方式打开文件file4.dat
    if(!fin){
        printf("Failed to open the file\n");
        exit(0);
    }
    
    // 从fin指向的数据文件file4.dat中读取数据到结构体数组st
    fread(st,sizeof(STU),N,fin);
    fclose(fin);
    
        
        for(i=0; i<N; i++) 
        fprintf(stdout,"%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);    
     
         
    fclose(fout);
    
    return 0;
}

5.实验任务5

for(int i=0;i<n;i++)  s[i].sum=s[i].objective+s[i].subjective;
    //考生排序
         STU temp;
        int j,i;
    for(i=0;i<n-1;i++)
      for(j=0;j<n-1-i;j++)
        if(s[j].sum<s[j+1].sum) {
            temp = s[j];
            s[j] = s[j+1];
            s[j+1] = temp;
        }

    //确定等级
    for( i=0;i<n;i++){
        if(i<0.1*n) 
        strcpy(s[i].level,"优秀");
        else if(i<0.5*n) 
        strcpy(s[i].level,"合格");
        else 
        strcpy(s[i].level,"不合格");
    }

 

posted @ 2020-12-30 17:00  李青宇  阅读(66)  评论(3)    收藏  举报