C语言编程

某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分)题目内容:某班有5名同学,建立一个学生的简单信... 某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分)
题目内容:
某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数)

输入格式:
%ld %s %f %f %f

输出格式:
%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n

输入样例:
201701 zhao 29.8 85.4 65.4
201702 qian 96.5 87.5 65.4
201703 sun 85.4 65.4 84.6
201704 li 63.4 95.4 86.3
201705 zhou 65.9 84.6 97.5
输出样例:
Number:  Name:        score:       Average:  rank:
201701   zhao      29.8 85.4 65.4     60.2          5
201702   qian       96.5 87.5 65.4     83.1          1
201703   sun        85.4 65.4 84.6     78.5          4
201704   li            63.4 95.4 86.3     81.7          3
201705   zhou      65.9 84.6 97.5     82.7          2
展开
 我来答
匿名用户
2018-06-09
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    long number;
    char name[10];
    float score[3];
    float average;
    int rank;
}DAT;
#define N (5)
void func(DAT *d,int n);
int main()
{
    DAT data[N];
    int i;
    for(i=0;i<N;++i)
    {
        scanf("%ld %s %f %f %f",&data[i].number,data[i].name,&data[i].score[0],&data[i].score[1],&data[i].score[2]);
    }
    func(data,N);
    for(i=0;i<N;++i)
    {
        printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",data[i].number,data[i].name,data[i].score[0],data[i].score[1],data[i].score[2],data[i].average,data[i].rank);
    }
    return 0;
}
int cmp_score(void *a,void *b)
{
    return ((DAT*)b)->average-((DAT*)a)->average;
}
int cmp_number(void *a,void *b)
{
    return ((DAT*)a)->number-((DAT*)b)->number;
}
void func(DAT *d,int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        d[i].average=(d[i].score[0]+d[i].score[1]+d[i].score[2])/3.0;
    }
    qsort(d,n,sizeof(DAT),cmp_score);
    for(i=0;i<n;++i)
    {
        d[i].rank=i+1;
    }
    qsort(d,n,sizeof(DAT),cmp_number);
}

网页链接

追问
Number:  Name:        score:       Average:  rank:
这一行没有,怎么办?要求和下方对应,一条对一条
百度网友6c3d893
2020-05-28
知道答主
回答量:1
采纳率:0%
帮助的人:651
展开全部
#include <stdio.h>
int main()
{struct student
{long int a;
char b[10];
float c;
float d;
float e;
int f;
float g;
}man[5];
int i,j,k,l;
for(i=0;i<5;i++)
{scanf("%ld %s %f %f %f",&man[i].a,&man[i].b,&man[i].c,&man[i].d,&man[i].e);
man[i].g=(man[i].c+man[i].d+man[i].e)/3;
}
for(i=0;i<5;i++)
{man[i].f=5;
for(j=0;j<5;j++)
{ if(man[i].g>man[j].g)
man[i].f=man[i].f-1;
}
}
printf("Number: Name: score: Average: rank:\n");
for(i=0;i<5;i++)
printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",man[i].a,man[i].b,man[i].c,man[i].d,man[i].e,man[i].g,man[i].f);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金小宝的ddhdcyh
2019-06-05
知道答主
回答量:1
采纳率:0%
帮助的人:775
展开全部
#include<stdio.h>
struct student
{
long num;
char name[10];
float score[3];
float ave;
int rank;
};
int main()
{
struct student stu[5];
int i,j,t;
for(i=0;i<5;i++)
{
scanf("%ld %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
stu[i].rank=5;
}
for(t=0;t<5;t++)
{
for(i=0;i<5;i++)
{
if(stu[t].ave>stu[i].ave)
stu[t].rank--;
}
}
printf("Number: Name: score: Average: rank:\n");
for(i=0;i<5;i++)
printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave,stu[i].rank);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freecat的家
2018-11-14
知道答主
回答量:1
采纳率:0%
帮助的人:845
展开全部
调试没成功,错哪呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式