c实验6

实验任务4
#include<stdio.h>
#include<string.h>
#define N 100
typedef struct
{
    char num[10];
    int s1;
    int s2;
    double sum;
    char level[10];
}STU;
int fun(STU a[],int n,STU h[]);
int main()
{
    STU s[N]={{"GA05",85,76},
              {"GA03",76,90},
              {"GA02",69,90},
              {"GA04",85,56},
              {"GA01",91,95},
              {"GA07",72,80},
              {"GA08",64,45},
              {"GA06",87,98},
              {"GA015",85,86},
              {"GA013",91,97}};
    STU h[N];
    int i,k,n=10;
    k=fun(s,n,h);
    printf("There are:\n");
    for(i=0;i<k;i++)
        printf("%s %d %d %.2f %s\n",h[i].num,h[i].s1,h[i].s2,h[i].sum,h[i].level);
    return 0;
}
int fun(STU a[],int n,STU h[])
{
    double ave=0;
    int i;
    for(i=0;i<n;i++)
    {
        a[i].sum=0.3*a[i].s2+0.7*a[i].s1;
        ave+=a[i].sum;
    }
    ave/=n;
    int j=0;
    for(i=0;i<n;i++)
        if(a[i].sum>=ave)
        {
            strcpy(a[i].level,"均分以上");
            h[j++]=a[i];
        }
    return j;
}

实验任务5
#include<stdio.h>
#include<string.h>
#define N 5
typedef struct student
{
    char name[10];
    int num;
    int maths;
    int computer;
    int english;
    int sum;
    char level[10];
}STU;
void fun(STU a[],int n);
int main()
{
    STU s[6*N]={{"A001",1,34,67,80},
                {"B003",3,78,87,90},
                {"A002",2,90,98,99},
                {"BOO2",4,56,78,98},
                {"A005",5,35,67,79}};
    int i;
    fun(s,N);
    for(i=0;i<N;i++)
        printf("%s %d %d %d %d %d %s\n",s[i].name,s[i].num,s[i].maths,s[i].computer,s[i].english,s[i].sum,s[i].level);
    return 0;
}
void fun(STU a[],int n)
{
    int max,min;
    max=min=a[0].maths+a[0].computer+a[0].english;
    int i;
    for(i=0;i<N;i++)
    {
        a[i].sum=a[i].maths+a[i].computer+a[i].english;
        if(a[i].sum<min)
            min=a[i].sum;
        else if(a[i].sum>max)
            max=a[i].sum;
    }
    for(i=0;i<N;i++)
    {
        if(a[i].sum==max)
            strcpy(a[i].level,"优秀");
        else if(a[i].sum==min)
            strcpy(a[i].level,"不及格");
        else
            strcpy(a[i].level,"合格");
    }
}

 

实验任务6
#include<stdio.h>
#define N 5
typedef struct student
{
    long no;
    char name[20];
    int score;
}STU;
void input(STU s[],int n);
int find_min_list(STU s[],STU t[],int n);
void output(STU s[],int n);
int main()
{
    STU stu[N],min_list[N];
    int count;
    printf("录入%d个学生信息:\n",N);
    input(stu,N);
    printf("\n统计最低分人数和学生信息……\n");
    count=find_min_list(stu,min_list,N);
    printf("\n一共有%d个最低分,信息如下:\n",count);
    output(min_list,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 find_min_list(STU s[],STU t[],int n)
{
    int i,min=s[0].score;
    for(i=0;i<n;i++)
        if(s[i].score<min)
            min=s[i].score;
    int j=0;
    for(i=0;i<n;i++)
        if(s[i].score==min)
            t[j++]=s[i];
    return j;
}

本次实验内容十分简单,结构体如果不涉及指针,应该还是比较简单的。但是从中也可以看出我自己难以发现一些小错误。

posted @ 2023-05-25 15:00  202183360008仲苏洋  阅读(15)  评论(0编辑  收藏  举报