是佳佳呀 发表于 2021-1-18 17:36:08

c语言小题目

定义一个结构,该结构由语文成绩(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;
};
int main(void)
{
    struct student a,b;
    int i,j,max;
    for(i=0;i<5;i++)
    {
       printf("请输入第%d个人的三科成绩,以空格分离",i+1);
       scanf("%lf%lf%lf",&a.chinese,&a.math,&a.english");
       getchar();
       a.aver=(a.chinese+a.math+a.english)/3.0;
       printf("请输入姓名\n");
       gets(a.name);
   }
    for(i=0;i<5;i++)
    {
       max=i;
       for(j=i+1;j<5;j++)
       {
         if(a.aver>a.aver)
         max=j;
       }
       b=a;
       a=a;
       a=b;
    }
    for(i=0;i<5;i++)
    {
       printf("姓名: %s   语文 :%lf    数学:%lf       英语   :%lf      平均分: %lf\n",a.name,a.chinese,a.math,a.english,a.aver);
   }
}
      

马邦浩 发表于 2021-1-18 19:59:25

不好意思忘记return 0 了,我是个小白,太抱歉了

DongGu.. 发表于 2021-1-19 15:57:26

大概思路就是这样,不过还是看来以后自己写一个,思路是一样的~
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct Student
{
    // 补充定义学号、姓名、分数
    long long int num;
    char name;
    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.score < a.score)
            {
                t = a;
                a = a;
                a = t;
            }
}
int main()
{
    Student stu;
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
      read(stu); // 自定义read函数
    }
    sort(stu, n); // 自定义sort函数对stu数组前n个元素排序
    for (int i = 0; i < n; i++)
    {
      print(stu); // 自定义print函数
    }
    return 0;
}
页: [1]
查看完整版本: c语言小题目