请问输出平均成绩的时候有成员的成绩是乱的该怎么改代码
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
//定义一个学生
typedef struct _Student
{
char name[20];//姓名
int stuNum;//学号
int grade;//班级
int Chinesescore;//语文成绩
int Mathematicsscore;//数学成绩
int Englishscore;//英语成绩
int score1;
int score2;
float Allscore; //总分
float Average;//平均成绩
}Student;
typedef struct _Node//节点
{
_Student stu; //学生
struct _Node* pNext; //指向下一个节点的指针
}Node;
Node *g_pHead = NULL; //头节点
//欢迎
void Welcome();
void InputStudent();//录入学生成绩
Node* Findstudent();//查找学生
void ModifyStudent();//修改学生信息
void DeleteStudent();//删除学生信息
Node* FindstudentGrande();//按班级查找学生
Node* Countstudent();
Node* Findstudent1();
int main()
{
while(1)
{
Welcome();//欢迎
char ch=getch();//从键盘接受一个字符
switch(ch)
{
case'1'://输入学生成绩
InputStudent();
break;
case'2'://修改学生成绩
ModifyStudent();
break;
case'3'://删除学生成绩
DeleteStudent();
break;
case'4'://计算每位学生的总分
break;
case'5'://计算每位学生的平均分
{
Node* p = Findstudent1();
if(p !=NULL)
{
printf ("平均分:%d\t",p->stu.Average);
}
else
printf("没有找到该学员.\n");
system("pause");
system("cls"); //清屏
break;
}
case'6'://按学号或姓名查询学生成绩
{
Node* p = Findstudent();
if(p !=NULL)
{
printf ("姓名:%s\t班级:%d\t学号:%d\t语文成绩:%d\t数学成绩:%d\t英语成绩:%d\t成绩1:%d\t成绩2:%d\t总成绩:%d\t平均分:%d\t",
p->stu.name,p->stu.grade,p->stu.stuNum,p->stu.Chinesescore,p->stu.Mathematicsscore,p->stu.score1,
p->stu.score2,p->stu.Allscore,p->stu.Average);
}
else
printf("没有找到该学员.\n");
system("pause");
system("cls"); //清屏
break;
}
case'7'://按班级查询学生成绩
{
Node* p = FindstudentGrande();
if(p !=NULL)
{
printf ("姓名:%s\t班级:%d\t学号:%d\t语文成绩:%d\t数学成绩:%d\t英语成绩:%d\t成绩1:%d\t成绩2:%d\t总成绩:%d\t平均分:%d\t",
p->stu.name,p->stu.grade,p->stu.stuNum,p->stu.Chinesescore,p->stu.Mathematicsscore,p->stu.score1,
p->stu.score2,p->stu.Allscore,p->stu.Average);
}
else
printf("没有找到该学员.\n");
system("pause");
system("cls"); //清屏
break;
}
case'8'://成绩排序
break;
case'9'://按班级统计学科总分、平均分等
break;
case'0'://退出
printf("退出系统\n");
return 0;
default:
printf("您的输入有误,请重新输入.\n");
system("pause");
system("cls"); //清屏
break;
}
}
system("pause");
return 0;
}
//欢迎
void Welcome()
{
printf("*************************************************\t*\n");
printf("*\t\t成绩管理\t\t\t *\n");
printf("*************************************************\t*\n");
printf("*\t\t1.输入学生成绩\t\t\t*\n");
printf("*\t\t2.修改学生成绩\t\t\t*\n");
printf("*\t\t3.删除学生成绩\t\t\t*\n");
printf("*\t\t4.计算每位学生的总分\t\t*\n");
printf("*\t\t5.计算每位学生的平均分\t\t*\n");
printf("*\t\t6.按学号或姓名查询学生成绩\t*\n");
printf("*\t\t7.按班级查询学生成绩\t\t*\n");
printf("*\t\t8.成绩排序\t\t\t*\n");
printf("*\t\t9.按班级统计学科总分、平均分等\t*\n");
printf("*\t\t0.退出\t\t\t\t*\n");
printf("*************************************************\n");
}
void InputStudent()//录入学生成绩
{ int Allscore;
int Average;
//创建一个新节点
Node* pNewNode = (Node*)malloc(sizeof(Node));
pNewNode->pNext = NULL;
//头插法
if (g_pHead == NULL)
{
g_pHead = pNewNode;
}
else
{
pNewNode->pNext = g_pHead;
g_pHead = pNewNode;
}
printf("请输入学生姓名:\n");
scanf("%s", pNewNode->stu.name);
printf("请输入学生班级:\n");
scanf("%d", &pNewNode->stu.grade);//&取地址运算符
printf("请输入学生学号:\n");
scanf("%d", &pNewNode->stu.stuNum);
printf("请输入学生语文成绩:\n");
scanf("%d", &pNewNode->stu.Chinesescore);
printf("请输入学生数学成绩:\n");
scanf("%d", &pNewNode->stu.Mathematicsscore);
printf("请输入学生英语成绩:\n");
scanf("%d", &pNewNode->stu.Englishscore);
printf("请输入学生成绩1:\n");
scanf("%d", &pNewNode->stu.score1);
printf("请输入学生成绩2:\n");
scanf("%d", &pNewNode->stu.score2);
Allscore=pNewNode->stu.Chinesescore+pNewNode->stu.Mathematicsscore+pNewNode->stu.Englishscore+pNewNode->stu.score1+pNewNode->stu.score2;
printf("总分%d\n",Allscore);
Average=(pNewNode->stu.Chinesescore+pNewNode->stu.Mathematicsscore+pNewNode->stu.English
Average=(pNewNode->stu.Chinesescore+pNewNode->stu.Mathematicsscore+pNewNode->stu.Englishscore+pNewNode->stu.score1+pNewNode->stu.score2)/5.0;
printf("平均分%d\n",Average);
printf("学生信息录入完成.\n");
system("pause");
system("cls"); //清屏
}
Node* Findstudent()//查找学生
{
int nStuNum;
char szName[20];
printf("请输入要查找学生的学号:\n");
scanf("%d",&nStuNum);
printf("请输入要查找学生的姓名:\n");
scanf("%s",szName);
Node* p = g_pHead;
while (p != NULL)
{
if (p->stu.stuNum == nStuNum ||0==strcmp(p->stu.name,szName))
{
return p;
}
p = p->pNext;
}
system("pause");
system("cls"); //清屏
return NULL;
}
void ModifyStudent()//修改学生信息
{
int nStuNum;
printf("请输入需要修改的学生信息的学号:\n");
scanf("%d",&nStuNum);
Node* p = g_pHead;
while (p != NULL)
{
if (p->stu.stuNum == nStuNum )
{
printf("请输入要修改的学生姓名 班级 语文成绩 数学成绩 英语成绩 成绩1 成绩2:\n");
scanf("%s %d %d %d %d %d %d",p->stu.name,&p->stu.grade,&p->stu.Chinesescore,&p->stu.Mathematicsscore,&p->stu.Englishscore,&p->stu.score1,&p->stu.score2);
printf("修改成功.\n");
system("pause");
system("cls"); //清屏
break;
}
p = p->pNext;
}
if (p == NULL)
{
printf("没有找到该学生信息.\n");
system("pause");
system("cls"); //清屏
}
}
void DeleteStudent()//删除学生信息
{
int nStuNum;
printf("请输入要删除的学生信息的学号:\n");
scanf("%d",&nStuNum);
Node* p1, *p2;
//判断是否为头节点
//是
if(g_pHead->stu.stuNum == nStuNum)
{
p1 = g_pHead;
g_pHead = g_pHead->pNext;
free(p1);
system("pause");
system("cls"); //清屏
return;
}
//不是
Node* p = g_pHead;
while(p->pNext != NULL)
{
if(p->pNext->stu.stuNum == nStuNum)
{
p2 = p->pNext;
p->pNext = p->pNext->pNext;
free(p2);
system("pause");
system("cls"); //清屏
return;
}
p = p->pNext;
if (p->pNext == NULL)
{
break;
}
}
if(p->pNext = NULL)
{
printf("没有找到该学员");
}
system("pause");
system("cls"); //清屏
}
Node* FindstudentGrande()//按班级查找学生
{
int nGrandeNum;
printf("请输入要查找的班级:\n");
scanf("%d",&nGrandeNum);
Node* p = g_pHead;
while (p != NULL)
{
if (p->stu.grade == nGrandeNum)
{
return p;
}
p = p->pNext;
}
system("pause");
system("cls"); //清屏
return NULL;
}
Node* Findstudent1()//就算平均分
{
int nStuNum;
char szName[20];
printf("请输入要计算的学生的学号:\n");
scanf("%d",&nStuNum);
printf("请输入要计算的学生的姓名:\n");
scanf("%s",szName);
Node* p = g_pHead;
while (p != NULL)
{
if (p->stu.stuNum == nStuNum ||0==strcmp(p->stu.name,szName))
{
return p;
}
p = p->pNext;
}
system("pause");
system("cls"); //清屏
return NULL;
}