跪求大神 解决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);
} 展开
#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);
} 展开
3个回答
展开全部
#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;
}
#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;
}
展开全部
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];
}
}
}
}
}
//没测试过,不过应该没问题,有问题可以追问,在线
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
楼上竟然这么快、、、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询