c语言高手进开帮帮忙!!急!!!!
求助谁能帮我做个c程序~有三个题目,随便哪个都行~~题目如下~急需!!谢谢!!!1,成绩排名次某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30...
求助谁能帮我做个c程序~有三个题目,随便哪个都行~~题目如下~急需!!谢谢!!!
1,成绩排名次
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
2、学生成绩统计
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。
3、矩阵基本运算的实现(加、减、乘、除、转置)
谢谢你的答案。我试过了~很好!请加上注释和流程图行么?非常感谢! 展开
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分才会有人给你做的东西。最好别随便问这个,没几个人会给你写的。
#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分才会有人给你做的东西。最好别随便问这个,没几个人会给你写的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询