c语言高手进开帮帮忙!!急!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:43:22
求助谁能帮我做个c程序~有三个题目,随便哪个都行~~题目如下~急需!!谢谢!!!
1,成绩排名次
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

2、学生成绩统计
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。

3、矩阵基本运算的实现(加、减、乘、除、转置)
谢谢你的答案。我试过了~很好!请加上注释和流程图行么?非常感谢!

第一题的答案,大体上是这样了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 30

typedef struct{
char id[10];
char name[20];
int MT;
int EN;
int PH;
int total;
float ave;
}Stu;

void add(Stu **s,Stu *a,int n){ //添加新纪录
int i;
for(i=n-1;i>=0;i--){ //把新加入的记录按照总分从大到小的顺序排列
if((s[i]->total)<(a->total)) s[i+1]=s[i];
else break;
}
s[i+1]=a;
}

void display(Stu **s,int n){ //显示所有记录
int i;
printf(" ID Name Mathematics English Physics Total Average\n");
for(i=0;i<n;i++)
printf("No.%d: %s %s %d %d %d %d %f\n",i+1,s[i]->id,s[i]->name,s[i]->MT,s[i]->EN,s[i]->PH,s[i]->total,s[i]->ave);
}

void search(Stu **s,char id[],int n){ //按照指定学生编号查找
int i;
for(i=0;i<n;i++)