实验七12.27

  • EX3

ANS:输出了按分数由高→低排序的信息;生成了文本文件file3.dat;数据信息正确且直观可读

  • EX4_1

ANS:输出了按分数由高到低排序的信息;生成了二进制文件file4.dat;But,除了名字正确以外,学号是“?”,成绩是熟悉的“烫烫烫烫”

  • EX4_2
    //EX4_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;
        
        // 以只读文本方式打开文件file4.dat 
        fin = fopen("C:\\Users\\Administrator\\Desktop\\C语言实验\\实验七\\ex4_1\\ex4_1\\file4.dat", "rb");
        if( !fin ) {  // 如果打开失败,则输出错误提示信息,然后退出程序 
            printf("fail to open file4.dat\n");
            exit(0);
        }
        
        
        fread(&st, sizeof(STU), N, fin);
        
        for(i=0; i<N; i++) 
            printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);
        
        fclose(fin);
    
        return 0;
    }

  • EX5
    #include <stdio.h>
    #include <string.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", 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;
        int i;
        
        fin = fopen("C:\\Users\\Administrator\\Desktop\\C语言实验\\实验七\\ex5\\ex5\\examinee.txt", "r");
        if (!fin)
        {
            printf("fail to open examinee.txt\n");
        }
        
        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) {
        
        FILE *fout;
        int i;
        
        fout = fopen("result.txt", "w");
        if (!fout)
        {
            printf("fail to open result.txt\n");
        }
        
        for (i = 0; i < N; i++)
            printf("%ld %s %.2f %.2f %.2f %s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
    
        fwrite(s, sizeof(STU), N, fout);
    
        fclose(fout);
    }
        
        
    
    // 对考生信息进行处理:计算总分,排序,确定等级
    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 - 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.1*n&&i <0.5*n)
                strcpy(s[i].level, "合格");
            else
                strcpy(s[i].level, "不合格");
        }
    }

  • 总结:

终于结束了,经过这七次实验,意识到自己还有很多很多不足。希望寒假时能把之前的选做部分都做一下以及好好查漏补缺之前做过的实验。期末加油

posted @ 2020-12-27 16:51  热心市民小杨  阅读(94)  评论(2编辑  收藏  举报