鱼C论坛

 找回密码
 立即注册
查看: 1570|回复: 3

[已解决]c语言小题目

[复制链接]
发表于 2021-1-18 17:36:08 | 显示全部楼层 |阅读模式
3鱼币
定义一个结构,该结构由语文成绩(float) ,数学成绩(float) ,英语成绩(float) ,名字(char20])组成,依此输入5个人名字,三门成绩,依据三门成绩的平均分从大到小排序,输出名字和对应的三门成绩。
最佳答案
2021-1-18 17:36:09
#include <stdio.h>
struct student{
      double chinese;
      double math;
      double english;
      double aver;
      char name[20];
};
int main(void)
{
    struct student a[5],b;
    int i,j,max;
    for(i=0;i<5;i++)
    {
       printf("请输入第%d个人的三科成绩,以空格分离",i+1);
       scanf("%lf%lf%lf",&a[i].chinese,&a[i].math,&a[i].english");
       getchar();
       a[i].aver=(a[i].chinese+a[i].math+a[i].english)/3.0;
       printf("请输入姓名\n");
       gets(a[i].name);
     }
    for(i=0;i<5;i++)
    {
       max=i;
       for(j=i+1;j<5;j++)
       {
         if(a[j].aver>a[max].aver)
           max=j;
       }
       b=a[max];
       a[max]=a[i];
       a[i]=b;
    }
    for(i=0;i<5;i++)
    {
       printf("姓名: %s   语文 :%lf    数学  :%lf       英语   :%lf      平均分: %lf\n",a[i].name,a[i].chinese,a[i].math,a[i].english,a[i].aver);
   }
}
      

最佳答案

查看完整内容

#include struct student{ double chinese; double math; double english; double aver; char name[20]; }; int main(void) { struct student a[5],b; int i,j,max; for(i=0;i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 17:36:09 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
struct student{
      double chinese;
      double math;
      double english;
      double aver;
      char name[20];
};
int main(void)
{
    struct student a[5],b;
    int i,j,max;
    for(i=0;i<5;i++)
    {
       printf("请输入第%d个人的三科成绩,以空格分离",i+1);
       scanf("%lf%lf%lf",&a[i].chinese,&a[i].math,&a[i].english");
       getchar();
       a[i].aver=(a[i].chinese+a[i].math+a[i].english)/3.0;
       printf("请输入姓名\n");
       gets(a[i].name);
     }
    for(i=0;i<5;i++)
    {
       max=i;
       for(j=i+1;j<5;j++)
       {
         if(a[j].aver>a[max].aver)
           max=j;
       }
       b=a[max];
       a[max]=a[i];
       a[i]=b;
    }
    for(i=0;i<5;i++)
    {
       printf("姓名: %s   语文 :%lf    数学  :%lf       英语   :%lf      平均分: %lf\n",a[i].name,a[i].chinese,a[i].math,a[i].english,a[i].aver);
   }
}
      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 19:59:25 | 显示全部楼层
不好意思忘记return 0 了,我是个小白,太抱歉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-19 15:57:26 | 显示全部楼层
大概思路就是这样,不过还是看来以后自己写一个,思路是一样的~
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct Student
{
    // 补充定义学号、姓名、分数
    long long int num;
    char name[55];
    int score;
};

/***定义read函数读取学生信息***/
void read(Student& a)
{
    scanf("%lld %s %d", &a.num, a.name, &a.score);
}
/***定义print函数输出学生信息***/
void print(const Student& a)
{
    printf("%lld %s %d\n", a.num, a.name, a.score);
}
/***定义sort函数对学生信息排序***/
void sort( Student a[], int n)
{
    Student t;
    for(int i=0;i<n-1;i++)
        for (int j = i + 1; j < n; j++)
            if (a[i].score < a[j].score)
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
}
int main()
{
    Student stu[100];
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        read(stu[i]); // 自定义read函数
    }
    sort(stu, n); // 自定义sort函数对stu数组前n个元素排序
    for (int i = 0; i < n; i++)
    {
        print(stu[i]); // 自定义print函数
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表