解题思路:
注意事项:
可以作为链表练习的一个题,蛮不错的
参考代码:
#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 人评分
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:739 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:584 |
C语言训练-求素数问题 (C语言代码)浏览:728 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1419 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:538 |
简单的a+b (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1311 |
【计算球体积】 (C语言代码)浏览:1103 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:476 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1072 |