实验 11结构体

问题 A: 高级语言程序设计实验8-1计算成绩平均分并排序

题目描述

输入10个学生的学号、姓名和成绩,计算并输出平均分,再按照从高分到低分的顺序输出他们的信息。

输入要求

输入10个学生的学号、姓名和成绩。学号和成绩用整数表示,姓名是一个长度不超过19个字符的字符串。

输出要求

输出平均分,再按照从高分到低分的顺序输出10个学生的信息。


#include<stdio.h>
struct student{
    int num;
    char name[20];
    int score;
};
struct student stud[10];
int main(void)
{
    int i,j,max,sum=0;
    struct student temp;

    for(i=0;i<10;i++){
        scanf("%d",&stud[i].num);
        scanf("%s",&stud[i].name);
        scanf("%d",&stud[i].score);
        sum=sum+stud[i].score ;
    }
    for(i=0;i<9;i++)
    {
        max=i;
        for(j=i+1;j<10;j++)
            if(stud[j].score <stud[max].score)
        max=j;
        temp=stud[max];
        stud[max]=stud[i];
        stud[i]=temp;
    }

    printf("The average: %d
",sum/10);
    printf("The student score:
");
        for(i=9;i>=0;i--)
            printf("%d %s %d
",stud[i].num ,stud[i].name ,stud[i].score );

        return 0;
}


 

问题 B: 高级语言程序设计实验8-2平均分和最高分

题目描述

输入某班5位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高的学生之姓名及数学、英语成绩。

输入要求

输入某班5位学生的姓名及数学、英语成绩。姓名是一个长度不超过19个字符的字符串,成绩用整数表示。

输出要求

输出每名学生的姓名和平均分,平均分用浮点数表示,输出时精确到小数点后1位。

然后输出平均分最高的学生之姓名及数学、英语成绩。

 
#include<stdio.h>
struct student{
    char name[19];
    int computer,english,math;
    double average;
};
double count_average(struct student s);
int main(void)
{
    int i;
    struct student s1;
    for(i=1;i<=5;i++){
        scanf("%s %.1f",s1.name,average);
    }
    return 0;
}
double count_average(struct student s)
{
    return(s.math+s.english+s.computer)/3.0;
}

问题 C: C语言-平均分

题目描述

有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及总分最高分的学生的数据(包括学号、姓名、3门课成绩)

输入要求

学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。

输出要求

各门课的平均成绩 总分最高分的学生的数据(包括学号、姓名、3门课成绩)

 

#include<stdio.h>
struct student{
    int num;
    char name[10];
    int grade1,grade2,grade3,sum;
};
int count_sum(struct student s){
    return (s.grade1+s.grade2+s.grade3);}

int main(void)
{
    int i,n,index,sum1,sum2,sum3;
    struct student students[50];
    sum1=sum2=sum3=0;
    scanf("%d",&n);
    index=0;
    for(i=0;i<n;i++){
        scanf("%d%s%d%d%d",&students[i].num,&students[i].name,&students[i].grade1,&students[i].grade2,&students[i].grade3);
        sum1=sum1+students[i].grade1;
        sum2=sum2+students[i].grade2;
        sum3=sum3+students[i].grade3;
        students[i].sum=count_sum(students[50]);
    }
    sum1=sum1/n;
    sum2=sum2/n;
    sum3=sum3/n;
    printf("%d %d %d
",sum1,sum2,sum3);

    for(i=0;i<n;i++)
        if(students[i].sum<students[index].sum)
            index=i;
    printf("%d %s %d %d %d
",students[index].num,students[index].name,students[index].grade1,students[index].grade2,students[index].grade3);
    return 0;
}
 

问题 D: OJ使用测试

题目描述

输入四个人的年龄和姓名,排序后,按年龄,从小到大输出人员年龄及其姓名

输入要求

输入四个人的年龄和姓名

输出要求

按年龄,从小到大输出人员年龄及其姓名

#include<stdio.h> struct student{ char name[10]; int age; }; int main(void) { int i,index,j; struct student students[4],temp; for(i=0;i<4;i++){ scanf("%d%s",&students[i].age,students[i].name); } for(i=0;i<4;i++){ index=i; for(j=i+1;j<4;j++) if(students[j].age<students[index].age) index=j; temp=students[index]; students[index]=students[i]; students[i]=temp; } for(i=0;i<4;i++) printf("%d %s ",students[i].age,students[i].name); }
#include<stdio.h>
struct student
{
    int num;
    char name[4];
    int a,b,c;
    int sum;
};
struct student stud[10],temp;
int main(void)
{
    int n;
    scanf("%d
",&n);
    int i,j,max;
    int sum1,sum2,sum3;
    int average1,average2,average3;
    sum1=sum2=sum3=0;

    for(i=0;i<n;i++){
    scanf("%d %s %d %d %d",&stud[i].num ,&stud[i].name ,&stud[i].a,&stud[i].b,&stud[i].c);
    sum1=sum1+stud[i].a;
    sum2=sum2+stud[i].b;
    sum3=sum3+stud[i].c;
    stud[i].sum=stud[i].a+stud[i].b+stud[i].c;
    }
    average1=sum1/n;
    average2=sum2/n;
    average3=sum3/n;
    printf("%d %d %d
",average1,average2,average3);
    
    
    for(i=0;i<n-1;i++){
        max=i;
        for(j=i+1;j<n;j++)
            if(stud[j].sum<stud[max].sum)
                max=j;
            temp=stud[max];
            stud[max]=stud[i];
            stud[i]=temp;
    }

    printf("%d %s %d %d %d
",stud[i].num,stud[i].name,stud[i].a,stud[i].b,stud[i].c);

    return 0;
}
原文地址:https://www.cnblogs.com/chaoyue0806/p/3434936.html