用C 语言解答,求大神完整过程,谢谢了!
用C语言解答,求大神完整过程,谢谢了!1)某班有若干个学生(假设为10),每个学生的信息包括学号、姓名、三门课的成绩,从键盘输入这些学生的信息,要求打印出三门课总平均成绩...
用C 语言解答,求大神完整过程,谢谢了!1)某班有若干个学生(假设为10),每个学生的信息包括学号、姓名、三门课的成绩,从键盘输入这些学生的信息,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。要求:
a.用average函数求总平均分;
b.用max函数找出最高分的学生数据;
c.总平均分和最高分学生的数据都在主函数中输出。 展开
a.用average函数求总平均分;
b.用max函数找出最高分的学生数据;
c.总平均分和最高分学生的数据都在主函数中输出。 展开
展开全部
/*注意事项:输入时注意格式,否则会出错.希望能帮到你*/
#include <stdio.h>
#include <stdlib.h>
typedef struct data data;
struct data
{
int stu_num;
char name[10];
float chinese;
float math;
float com;
data *next;
};
float average(data *x);
data *max(data *x);
int main(void)
{
data *first = NULL;
data *current = NULL;
data *last = NULL;
data *student = NULL;
int i = 0;
for(i = 0; i < 10; ++i)
{
if(!(current = (data*)calloc(1,sizeof(data))))
{
printf("内存不足!\n");
exit(1);
}
printf("请输入第%d个学生的学号:",i+1);
scanf(" %d",¤t->stu_num);
printf("请输入第%d个学生的姓名:",i+1);
scanf(" %s",current->name);
printf("请依次输入第%d个学生三个科目的成绩(科目间隔空格):",i+1);
scanf(" %f %f %f",¤t->chinese,¤t->math,¤t->com);
current->next = NULL;
if(first == NULL)
first = current;
else
last->next = current;
last = current;
}
student = max(first);
printf("\n所有学生三个科目的总平均分为:%f\n\n总分最高的学生信息如下:\n\n学号:%d\n姓名:%s\n语文成绩:%.2f\n数学成绩:%.2f\n计算机成绩:%.2f\n平均成绩:%.2f\n",average(first),student->stu_num,student->name,student->chinese,student->math,student->com,(student->chinese+student->math+student->com)/3);
while(first)
{
last = first;
first = first->next;
free(last);
}
return 0;
}
float average(data *x)
{
data *head = x;
float sum = 0;
while(head)
{
sum += head->chinese + head->math + head->com;
head = head->next;
}
return sum/30;
}
data *max(data *x)
{
data *head = x;
data *max_stu = NULL;
float result = 0;
while(head)
{
if(result < head->chinese + head->math + head->com)
{
max_stu = head;
result = head->chinese + head->math + head->com;
}
head = head->next;
}
return max_stu;
}
更多追问追答
追问
请问我怎么写是否可以呢,但是最后输出的时候有点不对
追答
哪里不对呢
展开全部
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct studnet
{
int studnet_ID[2];
char name[10];
int Math;
int Chinese;
int English;
int Total;
int avg;
}studnets;
int max(int num[MAX])
{
int i,flag=0,max=0;
for(i=0;i<MAX;i++)
{
if(max<num[i])
{
max=num[i];
flag=i;
}
}
return flag;
}
void avg(studnets std[MAX],int num[MAX])
{
int i;
for(i=0;i<MAX;i++)
{
std[i].avg=num[i]/3;
}
}
int main()
{
studnets std[MAX];
int i,j,num[MAX];
printf("请输入个人信息:\n");
printf("学号\t姓名\t数学\t语文\t英语\n");
for(i=0;i<MAX;i++)
{
scanf("%d%d",&std[i].studnet_ID[0],&std[i].studnet_ID[1]);
scanf("%s",std[i].name);
scanf("%d",&std[i].Math);
scanf("%d",&std[i].Chinese);
scanf("%d",&std[i].English);
std[i].Total=std[i].Math+std[i].Chinese+std[i].English;
num[i]=std[i].Total;
}
j=max(num);
avg(std,num);
printf("\n");
printf("最好成绩:\n");
printf("学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("%d%d\t%s\t%d\t%d\t%d\t%d\t%d\n",std[j].studnet_ID[0],std[j].studnet_ID[1],std[j].name,std[j].Math,
std[j].Chinese,std[j].English,std[j].Total,std[j].avg);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!用VC6可以吗?程序什么时间要
追问
vc 6是什么?我用devc++
这么做是否可以呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询