C语言关于2维数组的练习题。。。
已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排序记录(成绩最高的学生的排在数组最前面的行,成绩最低的排在数组最后面的行)。...
已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排序记录(成绩最高的学生的排在数组最前面的行,成绩最低的排在数组最后面的行)。
做了一点求它们的平均值,,,下面的就不知道怎么办了
#include"stdio.h"
void main()
{
int i,j;
float sum;
float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}};
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+s[i][j];
s[i][4]=sum/4.0;
}
}
} 展开
做了一点求它们的平均值,,,下面的就不知道怎么办了
#include"stdio.h"
void main()
{
int i,j;
float sum;
float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}};
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+s[i][j];
s[i][4]=sum/4.0;
}
}
} 展开
展开全部
#include"stdio.h"
void sweap(float *s, int n){
int i,j;
float sore;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(*(s+i)<*(s+j)){
sore = *(s+i);
*(s+i)= *(s+j);
*(s+j) = sore;
}
}
}
}
void main() { int i,j; float sum;
float avg[5]; float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}}; for(i=0;i<5;i++){ sum=0; for(j=0;j<4;j++){ sum=sum+s[i][j]; }
avg[i]=sum/4.0;
}
sweap(avg, 5);
for(i=0; i<5; i++){
printf("%f\n",avg[i]);
}}
void sweap(float *s, int n){
int i,j;
float sore;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(*(s+i)<*(s+j)){
sore = *(s+i);
*(s+i)= *(s+j);
*(s+j) = sore;
}
}
}
}
void main() { int i,j; float sum;
float avg[5]; float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}}; for(i=0;i<5;i++){ sum=0; for(j=0;j<4;j++){ sum=sum+s[i][j]; }
avg[i]=sum/4.0;
}
sweap(avg, 5);
for(i=0; i<5; i++){
printf("%f\n",avg[i]);
}}
追答
抱歉,来晚了,把void sweap(float *s, int n)改为
void sweap(float *s, int n, float a[][], int num){ int i,j,k;
float b[n]; float score, subscore;
for(i=0;i<n;i++){
b[i] = *(s+i); for(j=i+1;j<n;j++){ if(*(s+i)<*(s+j)){ score = *(s+i); *(s+i)= *(s+j); *(s+j) = score; } } }
for(i=0; i<n; i++){
for(j=0;j<n;j++){
if(b[i] == *(s+j)){
for(k=0; k<num; k++){
subscore = a[i][k];
a[i][k] = a[j][k];
a[j][k] = subscore;
}
}
}
}
}
其中 float a[][]是所有学生的科目成绩,num是科目数。 这样看看可以吗?
你也可以把平均成绩的计算迁到这个方法中。
展开全部
#include "stdio.h"
void _swap (float* a,float* b) {
float c=*a;
*a=*b;
*b=c;
}
int main()
{
int i,j;
float sum;
float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}};
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+s[i][j];
s[i][4]=sum/4.0;
}
}
for (i=0;i<5;i++)
for (j=i+1;j<5;j++)
if (s[i][4]<s[j][4])
for (int k=0;k<=4;k++)
_swap(s[i]+k,s[j]+k);
//输出
}
void _swap (float* a,float* b) {
float c=*a;
*a=*b;
*b=c;
}
int main()
{
int i,j;
float sum;
float s[5][5]={{94,78,87,76},{66,87,75,69},{100,98,89,77},{82,58,72,84},{82,73,67,54}};
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<4;j++)
{
sum=sum+s[i][j];
s[i][4]=sum/4.0;
}
}
for (i=0;i<5;i++)
for (j=i+1;j<5;j++)
if (s[i][4]<s[j][4])
for (int k=0;k<=4;k++)
_swap(s[i]+k,s[j]+k);
//输出
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询