实验7

1

#include <stdio.h>

#define N 5

typedef struct student{
    long no;
    char name[20];
    int score;
} STU;

void input(STU s[], int n);
int findMinlist(STU s[], STU t[], int n);
void output(STU s[], int n);

int main(){
    STU stu[N], minlist[N];
    int count;
    
    printf("录入%d个学生信息\n", N);
    input(stu, N);
    
    printf("\n统计最低分人数和学生信息...\n");
    count = findMinlist(stu, minlist, N);
    
    printf("\n一共有%d个最低分,信息如下:\n", count);
    output(minlist, count);
    
    return 0;
}

void input(STU s[], int n){
    int i;
    for (i = 0; i < n; i++)
        scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score);    
}

void output(STU s[], int n){
    int i;
    for (i = 0; i < n; i++)
        printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score);
}

int findMinlist(STU s[], STU t[], int n){
    int i = 0, j = 0, k;
    k = s[i].score;
    for (i = 1; i < n; i++)
        if (s[i].score < k)
            k = s[i].score;
    for (i = 0; i < n; i++)
        if (s[i].score == k)
            t[j++] = s[i];
    
    return j;        
}

 

2

#include <stdio.h>
#include <string.h>
#define N 10

typedef struct student{
    long 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;
}    

void input(STU s[], int n){
    int i;
    for (i = 0; i < n; i++)
        scanf("%ld %s %f %f",&s[i].id, s[i].name, &s[i].objective, &s[i].subjective);
}

void output(STU s[], int n){
    int i;
    printf("准考证号   姓名\t客观题得分\t操作题得分\t   总分   \t等级\n");
    for (i = 0; i < n; i++)
        printf("%ld\t    %s\t    %.2f\t     %.2f\t     %.2f\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
}

void process(STU s[], int n){
    int i, j;
    STU t;
    for (i = 0; i < n; i++)
        s[i].sum = s[i].objective + s[i].subjective;
    
    for (i = 0; i < n; i++)
        for (j = i + 1; j < n; j++)
            if (s[i].sum < s[j].sum){
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
    
    strcpy(s[0].level,"优秀");         
    for (i = 1; i < n; i++){
        if ( (i + 1) <= (int)n * 0.1 || s[i].sum == s[i-1].sum && strcmp(s[i-1].level,"优秀") == 0)
            strcpy(s[i].level,"优秀");
        else if( (i + 1) <= (int)n * 0.5 || s[i].sum == s[i-1].sum && strcmp(s[i-1].level,"合格") == 0)
            strcpy(s[i].level,"合格"); 
        else 
            strcpy(s[i].level,"不合格");     
    }                
}

 

3

#include <stdio.h>
#include <string.h>
#define N 15

typedef struct student{
    long 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);
FILE *fp;
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;
}    

void input(STU s[], int n){
    int i;
    if ((fp = fopen("examinee.txt","r") ) == NULL)
        printf("");
        
    for (i = 0; i < n; i++)
        fscanf(fp, "%ld %s %f %f",&s[i].id, s[i].name, &s[i].objective, &s[i].subjective);
}

void output(STU s[], int n){
    int i;
    if ((fp = fopen("result.txt","w") ) == NULL)
        printf("");
    printf("准考证号   姓名\t客观题得分\t操作题得分\t   总分   \t等级\n");
    for (i = 0; i < n; i++){
        printf("%ld\t    %s\t    %.2f\t     %.2f\t     %.2f\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
        fprintf(fp, "%ld\t    %s\t    %.2f\t     %.2f\t     %.2f\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);
    }
}

void process(STU s[], int n){
    int i, j;
    STU t;
    for (i = 0; i < n; i++)
        s[i].sum = s[i].objective + s[i].subjective;
    
    for (i = 0; i < n; i++)
        for (j = i + 1; j < n; j++)
            if (s[i].sum < s[j].sum){
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
    
    strcpy(s[0].level,"优秀");         
    for (i = 1; i < n; i++){
        if ( (i + 1) <= (int)n * 0.1 || s[i].sum == s[i-1].sum && strcmp(s[i-1].level,"优秀") == 0)
            strcpy(s[i].level,"优秀");
        else if( (i + 1) <= (int)n * 0.5 || s[i].sum == s[i-1].sum && strcmp(s[i-1].level,"合格") == 0)
            strcpy(s[i].level,"合格"); 
        else 
            strcpy(s[i].level,"不合格");     
    }                
}

 

posted @ 2021-12-28 20:09  方振宇  阅读(29)  评论(1)    收藏  举报