69,381
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
struct student
{
int iNum;
char cName[16];
float fChineseScore;
float fMathScore;
float fEnglishScore;
};
typedef struct student STUDENT;
void InputTranscript(STUDENT MyClass[], int num)
{
int i;
printf("请输入学生的成绩信息:\n");
for (i = 0; i < num; i++)
{
scanf("%d %s %f %f %f", &MyClass[i].iNum, MyClass[i].cName,
&MyClass[i].fChineseScore, &MyClass[i].fMathScore, &MyClass[i].fEnglishScore);
}
}
void DisplayTranscriptOne(STUDENT *MyScore)
{
printf("输出最高分学生的成绩信息:\n");
printf("%d %s %.2f %.2f %.2f\n", MyScore -> iNum, MyScore -> cName,
MyScore -> fChineseScore, MyScore -> fMathScore, MyScore -> fEnglishScore);
}
void DisplayTranscriptAll(STUDENT *MyClass, int num)
{
int i;
printf("输出全体学生的成绩信息:\n");
for (i = 0; i < num; i++)
{
printf("%d %s %.2f %.2f %.2f\n", (MyClass + i) -> iNum, (MyClass + i) -> cName,
(MyClass + i) -> fChineseScore, (MyClass + i) -> fMathScore, (MyClass + i) -> fEnglishScore);
}
}
STUDENT FindTop(STUDENT *MyClass,int num)
{
STUDENT TopOne;
int i;
float max = (MyClass -> fChineseScore) + (MyClass -> fMathScore) + (MyClass -> fEnglishScore);
float a, b, c;
for (i = 1; i < num; i++)
{
a = (MyClass + i) -> fChineseScore, b = (MyClass + i) -> fMathScore, c = (MyClass + i) -> fEnglishScore;
if ((a + b + c) > max)
{
max = a + b + c;
TopOne = *(MyClass + i);
}
}
return TopOne;
}
STUDENT *FindByName(STUDENT *MyClass, int num, char *pName)
{
int i;
int flag = 0;
for (i = 0; i < num; i++)
{
if (pName == (MyClass + i) -> cName )
{
flag = 1;
}
}
if(flag = 1)
{
return (MyClass + i);
printf("flag = %d", flag);
}
else
{
return NULL;
printf("flag = %d", flag);
}
}
void ModifyOne(STUDENT *MyInfo)
{
printf("请输入修改后的信息:\n");
scanf("%d %s %f %f %f", &MyInfo -> iNum, MyInfo -> cName,
&MyInfo -> fChineseScore, &MyInfo -> fMathScore, &MyInfo -> fEnglishScore);
}
void MenuHandle()
{
char cTemp[16];
STUDENT TopOne;
STUDENT sTranscript[3];
STUDENT * pStudent;
InputTranscript(sTranscript, 3);
TopOne = FindTop(sTranscript, 3);
DisplayTranscriptOne(&TopOne);
printf("What's name to find?\n");
scanf("%s", cTemp);
pStudent = FindByName(sTranscript, 3, cTemp);
if(pStudent != NULL)
{
printf("Find!Modify it.\n");
ModifyOne(pStudent);
}
else printf("Sorry,don'tfind %s.\n", cTemp);
DisplayTranscriptAll(sTranscript, 3);
}
void prog8_5()
{
MenuHandle();
}
void main()
{
prog8_5();
}