解题思路:
注意事项:
可以作为链表练习的一个题,蛮不错的
参考代码:
#include <stdio.h>
#include <stdlib.h>
struct student
{
char number[20];
char name[20];
int grade1;
int grade2;
int grade3;
struct student* next;
};
void CreatList(struct student* head,int N);
void input(struct student* temp);
int sum(struct student* target);
int main(void)
{
struct student* head=(struct student*)malloc(sizeof(struct student));
struct student* move=head;
int N; //N是学生记录数目
scanf("%d",&N);
int average1=0,average2=0,average3=0;
int all;
CreatList(head,N);
struct student* target=head->next; //作为最大的那个指针指向的结构体
for(int i=1;i<=N;i++)
{
move=move->next;
all=sum(move);
target=(sum(target)>all)?target:move;
average1+=move->grade1;
average2+=move->grade2;
average3+=move->grade3;
}
average1=average1/N;
average2=average2/N;
average3=average3/N;
printf("%d %d %d\n",average1,average2,average3);
printf("%s %s %d %d %d\n",target->number,target->name,target->grade1,target->grade2,target->grade3);
return 0;
}
/*----------------设置头结点-------------*/
void CreatList(struct student* head,int N)
{
struct student* move=head;
for(int i=1;i<=N;i++)
{
struct student* temp=(struct student*)malloc(sizeof(struct student));
move->next=temp;
input(temp);
temp->next=NULL;
move=temp;
}
}
void input(struct student* temp)
{
scanf("%s%s%d%d%d",temp->number,temp->name,&temp->grade1,&temp->grade2,&temp->grade3);
}
int sum(struct student* target)
{
return target->grade1+target->grade2+target->grade3;
}
0.0分
0 人评分
A+B for Input-Output Practice (VI) (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题9.3 (C++代码)浏览:665 |
IP判断 (C语言代码)浏览:1414 |
简单的a+b (C语言代码)浏览:704 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1416 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:786 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1327 |
printf基础练习2 (C语言代码)浏览:746 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
一元一次方程 (C语言代码)浏览:4063 |