【发布时间】:2019-12-10 20:06:56
【问题描述】:
一点背景故事: 我有这个作业,要求您使用函数和指针编写程序。你应该输入每个电影院整个夏天赚的钱。在某一时刻,您需要找到每个电影院的平均值,然后是每个月的平均值(例如,这会将 7 月份的所有收入相加并除以 5)。到目前为止,我做得还不错,但我被困住了……该程序运行良好,但我无法让它显示所有 3 个月的值。它只显示了第一个月的平均值 3 次.. 对我可以改变什么有什么建议吗?非常感谢您阅读本文,这是一个 cookie 和下面的代码。
#include "genlib.h"
#include <stdio.h>
#include "simpio.h"
#define row 5
#define col 3
void array(int array[row][col]);
void cinemaEarnings(int array[row][col], double *sum);
void columnEarnings(int array[row][col], int colAvg[]);
int main(){
double sum;
int array1[row][col];
int array2[col];
array(array1);
cinemaEarnings(array1,&sum);
columnEarnings(array1,array2);
return 0;
}
void array(int array[row][col]){
int i;
int j;
for (i=0; i<row; i++){
printf("CINEMA HALL NUMBER %d\n", i+1);
for (j=0; j<col; j++){
printf("Monthly earnings for month number %d: ", j+1);
array[j][i]=GetInteger();
}
}
}
void cinemaEarnings(int array[row][col], double *sum){
int total;
int i,j;
*sum =0;
for (j=0; j<row; j++){
for (i=0; i<col; i++){
*sum += array[i][j];
}
total = *sum / 3;
printf("\nAverage earnings for hall %d: %d\n",j+1, total);
*sum = 0;
}
}
void columnEarnings(int array[row][col], int colAvg[]){
int i,j;
double sum;
for (j=0; j<col; j++){
sum = 0;
for (i=0; i<row; i++){
sum+=array[i][j];
colAvg[j] = sum / row;
}
}
for (i=0; i<col; i++){
printf("\naverage for month number %d is : %d",i+1, colAvg[j]);
}
}
【问题讨论】:
-
array[j][i]=GetInteger();我想你想要array[i][j]=GetInteger();,否则你写的超出了数组的范围。 -
colAvg[j] = sum / row;嗯...为什么在columnEarnings的 inner for 循环中? -
如果您将
row更改为hall并将col更改为month- 或类似的东西,您的代码会更容易理解。另外,修复缩进。 -
@WhozCraig 它不应该在内部循环中吗?当我把它放在那个循环之外时,它与它在内部时的效果相同。如果我完全摆脱这两个循环,它就会发疯。
-
@DavidRanieri 抱歉,我忘了提到我需要“columnEarnings”方面的帮助。其余的工作正常。
标签: c arrays function pointers