第1个回答 2017-03-02
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main(){
int i,j,count=0;
double avg,temp,score[50],tempScore[50],sum=0;
char *sName[50],str[1000];
//问题1
for(i=0;i<sizeof(sName)/sizeof(sName[0]);i++){
printf("请输入第%d个学生的名字和分数(名字和分数之间使用空格隔开):",(i+1));
sName[i] = (char*)malloc(20*sizeof(char));
scanf("%s %lf",&str,&score[i]);
tempScore[i]=score[i];
sum+=score[i];
strcpy(sName[i], str);
}
printf("\n");
avg=sum*1.0/(sizeof(score)/sizeof(score[0]));
printf("这%d个学生的平均成绩是:%.2lf分\n",(sizeof(score)/sizeof(score[0])),avg);
//问题2
printf("\n");
printf("低于平均分的学生有:\n");
for(i=0;i<sizeof(score)/sizeof(score[0]);i++){
if(score[i]<avg){
count++;
if(count%5==0&){
printf("\n");
}else{
printf("%s\t",sName[i]);
}
}
}
//问题3
count=0;
for(i=0;i<sizeof(tempScore)/sizeof(tempScore[0]);i++){
for(j=0;j<sizeof(tempScore)/sizeof(tempScore[0])-i-1;j++){
if(tempScore[j]<tempScore[j+1]){
temp=tempScore[j];
tempScore[j]=tempScore[j+1];
tempScore[j+1]=temp;
}
}
}
printf("\n");
printf("获得最高分的学生有:\n");
for(i=0;i<sizeof(score)/sizeof(score[0]);i++){
if(score[i]==tempScore[0]){
count++;
if(count%5==0){
printf("\n");
}else{
printf("%s\t",sName[i]);
}
}
}
}本回答被提问者和网友采纳