//使用数组实现10名学生的成绩录入,并输出这10名学生中成绩的
//最高分
//最低分
//平均分
//按照分数从大到小排序
//思考:
//如何实现从小到大排序?
//如果学院有5个班,每个班30人,如何处理?
//求所有成绩中的最高分是哪个班的,第几个学生,如何处理?
#include<stdio.h>
#define NUM 3
#define M 2
#define N 3
//录入函数
void input(int *array,int count);
//输出函数
void put(int *array,int count);
//最高分
int arrayMax(int *array,int count);
//最低分
int arrayMin(int *array,int count);
//排序
void arraySort(int *array,int count,int order);
int Maxscore(int *cp[N],int count);
void main()
{
int score[NUM];
int classscore[M][N];
for(int i = 0; i < M;i ++)
for(int j = 0; j < N;j ++)
{
scanf("%d",classscore[i][j]);
}
for(int i = 0; i < M;i ++)
for(int j = 0; j < N;j ++)
{
printf("第%d个班的第%d个学生的成绩是%d",i,j,classscore[i][j]);
}
Maxscore(classscore,M);
//录入函数
printf("请输入成绩\n");
input(score,NUM);
//输出函数
put(score,NUM);
//最高分
printf("最高成绩是:%d\n",arrayMax(score,NUM));
//最低分
printf("最低成绩是:%d\n",arrayMin(score,NUM));
//排序
arraySort(score,NUM,1);
//平均成绩
int sum = 0;
for(int i = 0;i < NUM;i ++)
{
sum += score[i];
}
printf("学生的平均成绩是%d",sum/NUM);
}
void input(int *array,int count)
{
for(int i = 0; i < count; i ++)
{
printf("第%d个学生的成绩是:",i+1);
scanf("%d",array);
array ++;
}
}
void put(int *array,int count)
{
for(int i = 0; i < count; i ++)
{
printf("第%d个学生的成绩是%d\n",i+1,*array);
array ++;
}
}
int arrayMax(int *array,int count)
{
int max = *array;
array ++;
for(int i = 0; i < count ; i ++)
{
if(max < *array)
{
max = *array;
array ++;
}
}
return max;
}
int arrayMin(int *array,int count)
{
int min = *array;
array ++;
for(int i = 0; i < count ; i ++)
{
if(min > *array)
{
min = *array;
array ++;
}
}
return min;
}
//排序
void arraySort(int *array,int count,int order)
{
//order是1,降序排列
if(order)
{
for(int i = 0; i < count-1 ; i ++)
for(int j = i + 1; j < count; j ++)
{
if(*(array+i) < *(array+j))
{
int t = *(array+i);
*(array+i) = *(array+j);
*(array+j) = t;
}
}
}
//升序排序
else
{
for(int i = 0; i < count-1 ; i ++)
for(int j = i + 1; j < count; j ++)
{
if(*(array+i) > *(array+j))
{
int t = *(array+i);
*(array+i) = *(array+j);
*(array+j) = t;
}
}
}
}
//如果学院有5个班,每个班30人,如何处理?
//求所有成绩中的最高分是哪个班的,第几个学生,如何处理?
int Maxscore(int cp[][N],int count)
{
int max = cp[0][0];
int c,n;
for(int i = 0; i < count;i ++)
{
for(int j = 0; j < N ;j ++)
{
if(max < *(cp[i]+j)
{
max = *(cp[i]+j)
c = i;
n = j;
}
}
}
printf("第%d班的第%d个学生的成绩最高,是%d",c,n,*cp[c][n]);
}