滿意答案
df4dfw5e56
2017.05.28
采納率:51%????等級:6
已幫助:106人
//僅作參考
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
int studentNum = 0;
#define MAXSTUDENT (1024)
#define CheckData()\
{\
if(!studentNum)\
{\
printf("沒有學生數據,按任意鍵返回……\n");\
getch();\
return;\
}\
}\
typedef struct Student
{
int id;
int cScore;
int mathScore;
}Student;
void ClearStudent(Student* student)
{
memset((void*)student,0,sizeof(*student));
}
void ShowMainMenu()
{
system("cls");
printf("1.增加記錄\n2.計算每個學生的總成績\n3.計算每門課程的平均成績\n4.按座號查詢學生的成績\n5.按總分排名\n6.輸出前n名的學生的成績\n7.修改成績\n0.退出\n");
}
void ShowCountScore(const Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
printf("學生%04d的總成績:%d\n",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
}
void ShowClassAvg(const Student* student)
{
system("cls");
CheckData();
double sumc = 0;
double summath = 0;
for(int i = 0;i < studentNum;i++)
{
sumc += (student+i)->cScore;
summath += (student+i)->mathScore;
}
printf("C語言平均成績為:%lf\n",sumc/studentNum);
printf("數學平均成績為:%lf\n",summath/studentNum);
printf("\n按任意鍵繼續……");
getch();
}
void AddStudent(Student* student)
{
system("cls");
if(studentNum == MAXSTUDENT)
{
printf("人數已滿,按任意鍵返回……\n");
getch();
}
printf("分別錄入座號、C語言成績、數學成績:\n");
int id = 0;
int cScore = 0;
int mathScore = 0;
scanf("%d%d%d",id,cScore,mathScore);
for(int i = 0 ;i < studentNum;i++)
if((student+i)->id == id)
{
printf("座號重復,按任意鍵返回……\n");
getch();
return;
}
(student+studentNum)->id = id;
(student+studentNum)->cScore = cScore;
(student+studentNum)->mathScore = mathScore;
studentNum++;
}
void SelectFromID(const Student* student)
{
system("cls");
CheckData();
printf("輸入查詢ID:\n");
int id = 0;
scanf("%d",id);
printf("查詢結果:\n");
for(int i = 0;i
if(id == (student+i)->id)
{
printf("C語言成績為:%d\n數學成績為:%d\n",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf("\n按任意鍵繼續……");
getch();
}
void SortForCount(Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
{
for(int j = studentNum -1;j > i;j--)
if(((student+j)->cScore+(student+j)->mathScore) > ((student+j-1)->cScore+(student+j-1)->mathScore))
{
Student stu;
stu = *(student+j);
*(student+j) = *(student+j-1);
*(student+j-1) = stu;
}
}
}
void SortForN(Student* student,int n)
{
SortForCount(student);
if(!studentNum)
return;
n = n>studentNum?studentNum:n;
for(int i = 0;i< n;i++)
printf("第%d名:\nID:%d\nC語言成績為:%d\n數學成績為:%d\n總分為:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
}
void UpdateScore(Student* student)
{
system("cls");
CheckData();
printf("輸入修改ID:\n");
int id = 0;
scanf("%d",id);
int i = 0;
for(;i
if(id == (student+i)->id)
break;
if(i == studentNum)
printf("\n查無此人,按任意鍵繼續……");
else
{
printf("輸入欲修改的C語言成績、數學成績:\n");
int cScore = 0;
int mathScore = 0;
scanf("%d%d",cScore,mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore = mathScore;
printf("\n按任意鍵繼續……");
}
getch();
}
void RunStudent(Student* student)
{
while(1)
{
ShowMainMenu();
char chGet = getch();
switch(chGet)
{
case '1':
AddStudent(student);
break;
case '2':
ShowCountScore(student);
break;
case '3':
ShowClassAvg(student);
break;
case '4':
SelectFromID(student);
break;
case '5':
SortForCount(student);
for(int i =0;i
printf("第%d名:\nID:%d\nC語言成績為:%d\n數學成績為:%d\n總分為:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
break;
case '6':
{
int n = 0;
printf("輸入N:\n");
scanf("%d",n);
SortForN(student,n);
}
break;
case '7':
UpdateScore(student);
break;
case '0':
return;
default:
break;
}
}
}
int main()
{
Student* allStudent = (Student*)malloc(MAXSTUDENT*sizeof(Student));
memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));
RunStudent(allStudent);
return 0;
}
02分享舉報