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

求助谁能帮我做个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++)
if(strcmp(s[i]->id,id)==0) break; //如果找到对应编号,停止
if(i>=n) printf("Cannot find this id.\n"); //如果没有次编号,输出错误提示
else{
printf(" ID Name Mathematics English Physics Total Average\n");
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);
}
}

int main(){
int n=0,c;
Stu **s=(Stu **)calloc(N,sizeof(Stu *));
do{
printf("1.Add 2.Display 3.Search 4.Quit\n");
printf("Enter your choice: ");
scanf("%d",&c);
if(c==1){
if(n>=N) printf("Cannot add anymore.\n");
else{
Stu *a=(Stu *)malloc(sizeof(Stu));
printf("Enter the ID: ");
scanf("%s",a->id);
printf("Enter the name: ");
scanf("%s",a->name);
printf("Enter the score of Mathematics: ");
scanf("%d",&(a->MT));
printf("Enter the score of English: ");
scanf("%d",&(a->EN));
printf("Enter the score of Physics: ");
scanf("%d",&(a->PH));
a->total=a->MT+a->EN+a->PH; //计算总分
a->ave=(float)a->total/3; //计算平均分
add(s,a,n);
n++;
}
}
else if(c==2){
display(s,n);
}
else if(c==3){
char id[10];
printf("Enter the id: ");
scanf("%s",id);
search(s,id,n);
}
else if(c==4){
int i;
for(i=0;i<n;i++) //释放内存
free(s[i]);
free(s);
break;
}
}while(1);
return 0;
}

算是给你提个醒,你的第三题,如果矩阵的大小有限制,比如就是2×2或3×3的还好说,如果是任意大小的矩阵,光它除法的实现就是一个200分才会有人给你做的东西。最好别随便问这个,没几个人会给你写的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-30
你这全是大题啊!谁能有那么多功夫帮你做啊!?
相似回答