急~有一道C语言题,弄了好几天也没弄出来,后天就要交了,请高手帮帮忙.

2024-11-08 14:15:35
推荐回答(4个)
回答1:

举手之劳,弄了算了。昨天刚在以前的基础上改的,和你的要求很一致。
/*
一个完整的c程序如下,功能齐全,简洁明了。程序在win-tc和tc2.0下试验通过.程序实现从键盘输入20个学生的数据(包括学号、姓名、3门课的成绩),
程序执行输出所有学生3门课的总平均成绩,最高分学生的学号、姓名、3门课的成绩、3门课平均成绩,并按平均成绩高到低排序输出
*/
# include
# include
# define N 20 /*实际请更改*/
struct student
{ char num[5]; /*学号超过4位时请加长*/
char name[11]; /*实际请更改,名字不超过10字符,一个汉字2个字符*/
int score[3];
float avr;
}stu[N];

int main()
{
int i,j,k,max,maxi,sum,order[N];
float average;

/*以下为输入*/
for(i=0;i{printf("\nInput scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
/*以下为计算*/
average=0;
max=0;
maxi=0;
for(i=0;i{ sum=0;
order[i]=i;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if(sum>max)
{max=sum;
maxi=i;
}
}
average/=N;

/*以下为排序,选择排序*/
for(i=0;ifor(j=i+1;jif(stu[order[i]].avr{k=order[i];
order[i]=order[j];
order[j]=k;
}

/*以下为打印*/
printf("NO name score1 score2 score3 total average\n");
for(i=0;i{ printf("%-10s%-10s",stu[order[i]].num,stu[order[i]].name);
for(j=0;j<3;j++)
printf("%-8d",stu[order[i]].score[j]);
printf("%-.2f\n",stu[order[i]].avr);
}
printf("average=%6.2f\n",average);
printf("The highest score is: %s\t score total: %d.\n",stu[maxi].name,max);
system("pause");
return 0;
}

回答2:

我帮你做吧 等会做好了联系你!

回答3:

其实这种完整题目,只要是贴代码的,肯定是重复的,所谓的高手不会花时间做这个东西的,要想不重复,我资料里有联系方式

回答4:

呵呵,找找教材上的例子,呵呵,我们教材上就有相似的东西