#include<stdio.h>
int main()
{
float averc(float array[2]);
float score[2][5];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<5;j++)
scanf("%f",&score[i][j]);
for(j=0;j<5;j++)
printf("%f ",averc(score[j]));
}
float averc(float array[2])
{
int i,j;
float s=0;
for(i=0;i<2;i++)
s=s+array[i];
s=s/2.0;
return s;
}
两个人,五门课,求每门课平均成绩,要求使用函数,请问这个程序哪里有问题??
#include<stdio.h>
int main()
{
float averc(float array[2][5]);
float score[2][5];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<5;j++)
scanf("%f",&score[i][j]);
averc(score);
}
float averc(float array[2][5])
{
int i,j;
for(j=0;j<5;j++)
{
float s = 0;
for(i=0;i<2;i++)
s=s+array[i][j];
s=s/2.0;
printf("%f",s);
}
return 0;
}
完全可以把j的循环放到函数里面去
for(j=0;j<5;j++)
printf("%f ",averc(score[j]));
这个算的是每个人的平均成绩而不是每门课
其实二维数组在计算机中是以一维数组的形式保存的,只是每个元素又是一个数组。例如s[2][3],在内存中的顺序是:{s[0][1]s[0][2]s[0][3]},{s[1][1]s[1][2]s[1][3]}。s[2][3]可以说只有两个元素:数组s[0]和数组s[1]。所以s[1]是个一维数组。它包含三个元素。本题中你想使用s[0][0]和s[1][0]求平均值,但它们不是相邻的。除非你再写一个数组保存它俩,不然不能把直接函数的形参设为一个数组。(并没有数组连续的保存这两个数)
#include<stdio.h>
int main()
{
float averc(float a,float b);
float score[2][5];
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 5; j++)
scanf("%f", &score[i][j]);
for (i = 0; i < 5; i++)
printf("平均分:%f\n", averc(score[0][i],score[1][i]));
}
float averc(float a,float b)
{
return (a+b)/2;
}