跪求大神 解决c语言编译题 十万火急 谢谢 50

定义描述学生的结构体类型,包括:姓名、学号和三门课程的成绩。从键盘输入3个学生数据,要求计算每位学生三门课程的平均成绩,按平均成绩排序后,输出每位学生的信息。#inclu... 定义描述学生的结构体类型,包括:姓名、学号和三门课程的成绩。从键盘输入3个学生数据,要求计算每位学生三门课程的平均成绩,按平均成绩排序后,输出每位学生的信息。
#include<stdio.h>
#define NUM 3
struct student
{ char name[20];
int idnum;
float score[3];
float average;
};
/*此函数完成学生数据的输入并计算平均分*/
void input(struct students[],int n)
{ 求填空 !!!! }

/*此函数完成学生数据的输出*/
void output(structstudent s[],int n)
{ 求填空!!! }
/*此函数根据平均分进行排序*/
void sort(struct students[],int n)
{ 求填空!!! }

void main( )
{ struct student s[NUM];
input(s,NUM);
sort(s,NUM);
output(s,NUM);
}
展开
 我来答
thinct_VC
2014-05-07 · 超过16用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:18.6万
展开全部
#include "stdafx.h"
#include <stdlib.h>
#include<stdio.h>
#include <string>
#define NUM 3
struct student
{
char name[20];
int idnum;
float score[3];
float average;
};
/*此函数完成学生数据的输入并计算平均分*/
void input(struct student s[],int n)
{
printf("#####请输入学生成绩#####\n");
for (int i=0; i<n; i++)
{
printf("***********************\n");
printf("姓名:");
scanf("%s", s[i].name);
printf("学号:");
scanf("%d", &(s[i].idnum));
printf("分数:\n");
float sum = 0.0f;
for (int j=0; j<3; j++)
{
printf("\t第%d成绩:", j+1);
scanf("%f", &(s[i].score[j]));
sum = sum + s[i].score[j];
}
s[i].average = sum/3;
printf("\n");
}
}

/*此函数完成学生数据的输出*/
void output(struct student s[],int n)
{
printf("#####学生成绩排名#####\n");
for (int i=0; i<n; i++)
{
printf("***********************\n");
printf("姓名:%s\n", s[i].name);
printf("学号:%d\n", s[i].idnum);
for (int j=0; j<3; j++)
{
printf("\t第%d成绩:%f\n", i, s[i].score[j]);
}
printf("平均分:%f", s[i].average);

printf("\n");
}
}

/*此函数根据平均分进行排序*/
void sort(struct student s[],int n)
{
for (int i=0; i<n-1; i++)
{
int max=i;
for (int j=i+1; j<n; j++)
{
if (s[max].average < s[j].average)
max = j;
}
if (max != i)
{
student temp = {0};
memcpy(&temp, &(s[i]), sizeof(student));
memcpy(&(s[i]), &(s[max]), sizeof(student));
memcpy(&(s[max]), &temp, sizeof(student));
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
struct student s[NUM];
input(s,NUM);
sort(s,NUM);
output(s,NUM);

system("pause");
return 0;
}
哀伤之酸
2014-05-07 · TA获得超过230个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:138万
展开全部
void input(struct students[],int n)
{
    for(int i = 0 ; i < n; i++)
    {
        scanf("%s %d ",&students[i].name,&students[i].idnum);
        for(int j =0;j<3;j++)
        {
            scanf("%f",&students[i].score[j]);
        }
        students[i].average = (students[i].score[0]+students[i].score[1]
                              +students[i].score[2])/3;
    }
}
void output(struct students[],int n)
{
    for(int i = 0 ; i < n; i++)
    {
        printf("%s %d %f %f %f %d\n",students[i].name,students[i].idnum,
                students[i].score[0],students[i].score[1],students[i].score[2],
                students[i].average);
    }
}

void sort(struct students[],int n)
{
    student temp;
    for(int i = 0 ; i < n; i++)    //从平均分由高到低排序
    {
        for(int j = i ; j < n; j++)
        {
            if(students[i].average < students[j].average)
            {
                temp.average = students[i].average;    
                students[i].average = students[j].average;
                students[j].average = temp.average;
                
                temp.name= students[i].name;    
                students[i].name = students[j].name;
                students[j].name = temp.name;
                
                temp.idnum = students[i].idnum;    
                students[i].idnum = students[j].idnum;
                students[j].idnum= temp.idnum;
                
                for(int k=0;k<3;k++)
                {
                    temp.score[k]= students[i].score[k];    
                    students[i].score[k] = students[j].score[k];
                    students[j].score[k]= temp.score[k];
                }
            }
        }
    }
}


//没测试过,不过应该没问题,有问题可以追问,在线
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友830c3a4
2014-05-07 · 超过22用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:43.3万
展开全部
#include<stdio.h>
#define NUM 3
struct student
{   char name[20];
    int idnum;
    float score[3];
    float average;
};
/*此函数完成学生数据的输入并计算平均分*/
void input(struct student s[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("Please input the student%d's name:\n",i+1);
        getchar();
        gets(s[i].name);
        printf("Please input the student%d's three scores:\n");
        scanf("%f%f%f",&s[i].score[0],&s[i].score[1],&s[i].score[2]);
        s[i].average=(s[i].score[0] + s[i].score[1] + s[i].score[2])/3;
        s[i].idnum = i+1;
    }
}

/*此函数完成学生数据的输出*/
void output(struct student s[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("Idnum: %d Name: %-5sScore:%-3.1f %-3.1f %-3.1f  Average: %-3.1f \n"
               ,s[i].idnum,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].average);
    }
}
/*此函数根据平均分进行排序*/
void sort(struct student s[],int n)
{
    int i,j;
    for(i=0; i<n;i++)
    {
        for(j=i; j<n; j++)
        {
            if(s[i].average>s[j].average)
            {
                struct student temp;
                temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
}

void main( )
{     struct student s[NUM];
       input(s,NUM);
       sort(s,NUM);
       output(s,NUM);
}

楼上竟然这么快、、、

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式