#include
#define stud 30
#define course 5
void total(int *score,int sum[],float aver[],int m,int n);
void print(int *score,int sum[],float aver[],int m,int n);
int main()
{
int i,j,m,n,score[stud][course],sum[stud];
float aver[stud];
printf("学生数:");
scanf("%d",&m);
printf("科数:");
scanf("%d",&n);
printf("input score:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&score[i][j]);
}
}
total(*score,sum,aver,m,n);
print(*score,sum,aver,m,n);
return 0;
}
void total(int*pscore,int sum[],float aver[],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
sum[i]=0;
for(j=0;j<n;j++)
{
sum[i]=sum[i]+pscore[i*n+j];
}
aver[i]=(float)sum[i]/n;
}
}
void print(int*pscore,int sum[],float aver[],int m,int n)
{
int i,j;
printf("result:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d\t",pscore[i*n+j]);
}
printf("%5d\t%6.lf\n",sum[i],aver[i]);
}
}

输入m个学生和n门科目,计算并打印每个学生各门科目的总分和平均分 。下列代码哪里错了求大佬T^T
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2019-01-02 09:57关注
如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢
#include<stdio.h> #define stud 30 #define course 5 void total(int *score, int sum[], float aver[], int m, int n); void print(int *score, int sum[], float aver[], int m, int n); int main() { int i, j, m, n, score[stud][course], sum[stud]; float aver[stud]; printf("学生数:"); scanf("%d", &m); printf("科数:"); scanf("%d", &n); printf("input score:\n"); for (i = 0; i<m; i++) { for (j = 0; j<n; j++) { scanf("%d", &score[i][j]); } } total((int *)score, sum, aver, m, n); //传指针 print((int *)score, sum, aver, m, n); return 0; } void total(int*pscore, int sum[], float aver[], int m, int n) { int i, j; for (i = 0; i<m; i++) { sum[i] = 0; for (j = 0; j<n; j++) { sum[i] = sum[i] + pscore[i*course + j]; //这里不是n而是course } aver[i] = (float)sum[i] / n; } } void print(int*pscore, int sum[], float aver[], int m, int n) { int i, j; printf("result:\n"); for (i = 0; i<m; i++) { for (j = 0; j<n; j++) { printf("%4d\t", pscore[i*course + j]); } printf("%5d\t%6.f\n", sum[i], aver[i]); // double才是 lf } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用 2