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

2024年11月17日 08:24
有2个网友回答
网友(1):

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

#include
#include
#include
#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 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 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 free(s[i]);
free(s);
break;
}
}while(1);
return 0;
}

算是给你提个醒,你的第三题,如果矩阵的大小有限制,比如就是2×2或3×3的还好说,如果是任意大小的矩阵,光它除法的实现就是一个200分才会有人给你做的东西。最好别随便问这个,没几个人会给你写的。

网友(2):

你这全是大题啊!谁能有那么多功夫帮你做啊!?