随机产生10个学生5门课成绩(成绩范围为【0,100】,并输出平均分最高学生的成绩和平均分最低分学生的成绩)
问题描述:
随机产生10个学生5门课程的成绩(成绩范围(0-100)) 并输出平均分最高的学生成绩和平均分最低的学生成绩。
答
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
int a[10][5];
int i, j, s, maxIndex, minIndex;
float avg, max = -999999, min = 999999;
for (i = 0; i < 10; i++)
{
s = 0;
for (j = 0; j < 5; j++)
{
a[i][j] = rand() % 101;
s += a[i][j];
printf("%d\t", a[i][j]);
}
printf("\n");
avg = s / 5.0;
if (avg > max)
{
max = avg;
maxIndex = i;
}
if (avg < min)
{
min = avg;
maxIndex = i;
}
}
printf("平均分最高学生的成绩:");
for (j = 0; j < 5; j++)
printf("%d ", a[maxIndex][j]);
printf("平均分%.2f\n", max);
printf("平均分最低学生的成绩:");
for (j = 0; j < 5; j++)
printf("%d ", a[minIndex][j]);
printf("平均分%.2f\n", min);
return 0;
}
如有帮助,望采纳!谢谢!
答
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10
void main()
{
int stuScore[NUM][5];
double averageScore[NUM];
int sum;
srand((unsigned)time(NULL));
for(int i=0;i<NUM;i++)
{
sum=0;
for(int j=0;j<5;j++)
{
stuScore[i][j]=rand()%100+1;
sum += stuScore[i][j];
}
averageScore[i]=sum/5.0;
}
//采用选择排序对学生平均成绩进行排名
double temp;
int maxValue;
for(int j=0;j<NUM-1;j++)
{
maxValue=j;
for(int k=j+1;k<NUM;k++)
{
if(averageScore[k]>averageScore[maxValue])
{
maxValue=k;
}
}
if(maxValue != j)
{
temp = averageScore[j];
averageScore[j] = averageScore[maxValue];
averageScore[maxValue]=temp;
}
}
printf("最高平均分为:%5.2f,最低平均分为:%5.2f\n",averageScore[0], averageScore[9]);
}