第七次实验

实验三正确输出数据,,,生成了dat文件,且直观可读

实验四任务一正确输出数据,,,生成了dat文件,且不可读

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 10
typedef struct std {
    int num;
    char name[20];
    int score;

}STU;
int main044() {
    FILE* fp;
    STU a[N] = {0};
    int i = 0;

    fp = fopen("E:\\practices\\实验7\\file4.txt", "rb");
    if (!fp) {
        printf("wrong!\n");
        return 0;
    }
    
    fread(a,sizeof(STU),N,fp);
        
    fclose(fp);
    
    for(i=0;i<N;i++)
        printf("%-10d%-20s%-6d\n", a[i].num, a[i].name, a[i].score);
    return 0;
}

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define  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 main05() {
    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* fp;

    fp = fopen("E:\\practices\\实验7\\examinee.txt", "r");
    if (!fp) {
        printf("wrong!\n");
        return 0;
    }

    for (int i = 0; i < N; i++) {
        fscanf(fp, "%ld %s %f %f", &s[i].id, s[i].name, &s[i].objective, &s[i].subjective);
    }
    fclose(fp);
}

// 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级
// 不仅输出到屏幕上,还写到文本文件result.txt中 
void output(STU s[], int n) {
    FILE* fp;
    int i;
    for (i = 0; i < N; i++) {
        printf("%-15ld%-20s% -6.2f %-6.2f %-6.2f %-10s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
    }

    fp = fopen("E:\\practices\\实验7\\result.txt", "w");
    if (!fp) {
        printf("wrong!\n");
        return 0;
    }

    for (i = 0; i < N; i++) {
        fprintf(fp, "%-15ld%-20s%-6.2f%-6.2f%-6.2f%-10s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
    }
    fclose(fp);
}

// 对考生信息进行处理:计算总分,排序,确定等级
void process(STU s[], int n) {
    STU t;

    for (int i = 0; i < N; i++)
        s[i].sum = s[i].objective  + s[i].subjective ;

    for(int i=0;i<N-1;i++)
        for(int j=0;j<N-i-1;j++)
            if (s[j].sum < s[j + 1].sum) {
                t = s[j];
                s[j] = s[j + 1];
                s[j + 1] = t;
            }

    for (int i = 0; i < N; i++) {
        if (i+1 <= 0.1 * N)strcpy(s[i].level, "优秀");
        else if (i+1 <= 0.5 * N)strcpy(s[i].level, "合格");
        else strcpy(s[i].level, "不合格");
    }

}

 

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<time.h>

#define N 80

typedef struct stu {
    int num;
    long id;
    char name[20];
    char class[20];

}STU;

int main06(){
    int num;
    int flag[N+1] = { 0 };//用于处理可能的重复抽点,抽到记flag为1。
    STU s[N];
    FILE* fp1, * fp2;

    time_t timer=time(NULL);  //获取时间为种子
    srand((size_t)timer);   

    fp1 = fopen("E:\\practices\\实验7\\list.txt","r");
    if (!fp1) {
        printf("wrong!");
        exit(0);
    }

    for (int i = 0; i < N; i++) {
        fscanf(fp1, "%d %ld %s %s", &s[i].num, &s[i].id, s[i].name, s[i].class);
    }
    fclose(fp1);

    fp2 = fopen("E:\\practices\\实验7\\lucky.txt", "w");
    if (!fp2) {
        printf("wrong!");
        exit(0);
    }

    for (int i = 0; i < 5; i++) {
        num = rand() % 80 + 1;
        if (flag[num] == 1) {
            i--;
            continue;
        }

        printf("%-3d%10ld%20s%20s\n", s[num].num, s[num].id, s[num].name, s[num].class);
        fprintf(fp2, "%-3d%10ld%20s%20s\n", s[num].num, s[num].id, s[num].name, s[num].class);
        flag[num] = 1;
    }
    fclose(fp2);

    return 0;
}

 

 

 

posted on 2020-12-25 20:44  wlj23  阅读(90)  评论(2)    收藏  举报