魔兽世界大号小号幻化:编程的问题 回答的好追加分

来源:百度文库 编辑:高考问答 时间:2024/04/28 10:00:10
求全班同学的分数的加权平均并且排序
全班53个学生,3门学科,学分是3,2,1.成绩用随机列表产生.
用C语言编写.

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void generate(float *d, int n)
/*产生n个0到100浮点随机数*/
{
int i;
srand( (unsigned)time( NULL ) ); /*用时间初始化随机数种子*/
for (i=0;i<n;i++)
{
int t=rand()%201;
*d++=(float)(t/10.)*5;
/*这两行保证了成绩包含如57.5,66.5等0.5分的情况*/
}
}
void sort(float *d, int n)
{/*采用了交换排序*/
int i,j;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (d[i]<d[j])
{
float t=d[i];
d[i]=d[j];
d[j]=t;
}
}

int main(int argc, char* argv[])
{
int i;
float score[53][3];
float average[53];
float averageall=0;
generate(score[0],3*53); /*产生3×53个学生成绩*/
for (i=0;i<53;i++) /*求出每个人的加权平均成绩*/
{
average[i]=(score[i][0]*3 + score[i][1]*2 + score[i][3]*1)/(3+2+1);
averageall+=average[i];
}
averageall/=53;
sort(average,53);
printf("学号\t成绩\n====\t====\n");
for (i=0;i<53;i++)
printf("%d\t%4.1f\n",i,average[i]);
printf("====\t====\n");
printf("全班平均成绩:%4.1f\n",averageall);
return 0;
}