#include <stdio.h>
void total(int *a,int sum[],float aver[],int m,int n);
void print(int *a,int sum[],float aver[],int m,int n);
int main()
{
int i,j,m,n,a[30][5],sum[30];
float aver[30];
printf("how many student?");
scanf("%d",&m);
printf("how many courses?");
scanf("%d",&n);
printf("input scores:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
total(*a,sum,aver,m,n);
print(*a,sum,aver,m,n);
return 0;
}
void total(int *a,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]+a[i*n+j];
aver[i]=(float)sum[i]/n;
}
}
void print(int *a,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",a[i*n+j]);
printf("5d\t%6.1f\n",sum[i],aver[i]);
}
}
运行后的结果不正确,怎么修改代码合适?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
CSDN专家-link 2021-10-10 13:24关注二维数组不能这么传递和访问,还是改为全局变量吧
#include <stdio.h> void total(int sum[],float aver[]); void print(int sum[],float aver[]); int m,n,a[30][5]; int main() { int i,j,sum[30]; float aver[30]; printf("how many student?"); scanf("%d",&m); printf("how many courses?"); scanf("%d",&n); printf("input scores:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) scanf("%d",&a[i][j]); } total(sum,aver); print(sum,aver); return 0; } void total(int sum[],float aver[]) { int i,j; for(i=0;i<m;i++) { sum[i]=0; for(j=0;j<n;j++) sum[i]=sum[i]+a[i][j]; aver[i]=(float)sum[i]/n; } } void print(int sum[],float aver[]) { int i,j; printf("result:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%4d\t",a[i][j]); printf("%5d\t%6.1f\n",sum[i],aver[i]); } }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报