血型遗传关系c语言编程,根据血型遗传关系,编程实现:○1.输入

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

df4dfw5e56

2017.05.28

02ae427d08e371d7e90d5b995e828d6d.png

采纳率: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分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值