• 实验7 文件


    三.实验3

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

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

    四.实验4

    子任务1

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

    子任务2

    #include <stdio.h> 
    #include <stdlib.h>
    #define N 10
    
    typedef struct student {
        int num;
        char name[20];
        int score;
    }STU;
    
    int main() 
    {
        FILE *fin;
        STU st[N];
        int i;
        fin = fopen("file4.dat", "rb");
        if(!fin) 
        { 
            printf("fail to open file1.dat
    ");
            exit(0);
        }
        for(i=0; i<N; i++) 
        fread(st,sizeof(STU),10,fin);    
        fclose(fin);
        for(i=0; i<N; i++) 
        printf("%-6d%-10s%3d
    ", st[i].num, st[i].name, st[i].score);
        return 0;
    }

    五.实验5

    #include <stdio.h>
    #include <string.h>
    #include<stdlib.h>
    const int N = 10;
    
    // 定义结构体类型struct student,并定义其别名为STU 
    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); 
        input(stu, N);
        
        printf("
    对考生信息进行处理: 计算总分,确定等级
    ");
        process(stu, N);
        
        printf("
    打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级
    ");
        output(stu, N); 
        
        return 0;
    } 
    
    // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
    void input(STU s[], int n) {
        FILE *fin;
        int i;
        fin=fopen("examinee.txt","r");
        if(!fin)
        {
            printf("fail to open examinee.txt
    ");
            exit(0);
        }
        for(i=0;i<n;i++)
          fscanf(fin,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective);
        fclose(fin);  
    }
    
    // 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级
    // 不仅输出到屏幕上,还写到文本文件result.txt中 
    void output(STU s[], int n) {
        int i;
        FILE *fat;
        printf("准考证号       姓名   客观题得分      操作题得分       总分          等级
    ");
        for(i=0;i<n;i++)
         printf("%-13d %-9s %-13.3f %-15.3f %-14.3f %-5s
    ", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
         fat=fopen("result.txt","w");
         if(!fat)
        {
            printf("fail to open result.txt
    ");
            exit(0);
        }
        for(i=0;i<n;i++)
        fprintf(fat,"%ld      %s    %.2f       %.2f      %.2f   %s
    ",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
        fclose(fat);
    }   
    
    // 对考生信息进行处理:计算总分,排序,确定等级
    void process(STU s[], int n) {
    int i,j;
        STU temp;
        for(i=0;i<n;i++){
            s[i].sum=s[i].objective+s[i].subjective;
        }
        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];
                 s[j]=s[j+1];
                 s[j+1]=temp;
                 } 
        }
        for(i=0;i<n;i++){
            if((i+1)<=(n*0.1))
            strcpy(s[i].level,"优秀");
            else if((i+1)>(n*0.1)&&(i+1)<=(n*0.5))
            strcpy(s[i].level,"合格");
            else
            strcpy(s[i].level,"不合格");
        }  
        
    }

  • 相关阅读:
    cpuset
    top
    path-lookup
    strace
    IDR算法[原理]
    cgroup
    转载
    std::reverse_iterator::base
    可重入、不可重入
    chromium code 中 普遍使用的 C++11 语法
  • 原文地址:https://www.cnblogs.com/qiansen/p/14204458.html
Copyright © 2020-2023  润新知