我的程序不会从setAverage和maximumNum变量中打印出任何值。我的编译器没有错误。我在这里想念什么?
#include <stdio.h>
#include <stdlib.h>
#define ROWS 3
#define COLS 5
void arrayNumbers(float set_numbers[ROWS][COLS], int, int, float, float);
void inputData(float set_numbers[ROWS][COLS], int, int);
int main(){
// 2D array of 15 numbers declaration and variables declared
float set_numbers[ROWS][COLS], largestNum, setAverage;
//counter variables for the loop
int column, row;
inputData(set_numbers, row, column);
arrayNumbers(set_numbers, row, column, setAverage, largestNum);
printf("\n");
printf("\tThe total average of the set: %.1f\n", setAverage);
printf("\tThe largest number in the array is: %.1f\n\n", largestNum);
return 0;
}
void inputData(float set_numbers[ROWS][COLS], int row, int column){
printf("\tYou're given an array which is a 3-by-5 array.\n");
printf("\tYou're going to put in each of the total 15 values.\n");
printf("\t///////////////////////////////////////////////////\n");
for(row = 0; row < ROWS; row++){
for(column = 0; column < COLS; column++){
printf("\tAdd data to position [%d]:[%d]", row + 1, column + 1);
scanf("%f", &set_numbers[row][column]);
}
}
printf("\n\tYour entered values are: \n\n");
for(row = 0; row < ROWS; row++){
for(column = 0; column < COLS; column++){
printf("\t%.1f\t", set_numbers[row][column]);
}
printf("\n");
}
}
void arrayNumbers(float set_numbers[ROWS][COLS], int row, int column,
float setAverage, float largestNum){
printf("\t/////////////////////////////////////////////////////////");
printf("//////////\n");
printf("\n\tThe average of your 3-by-5 sets of numbers are: \n\n");
float total, sum;
for(row = 0; row < ROWS; row++){
for(column = 0; column < COLS; column++){
sum = 0;
sum = sum + set_numbers[row][column];
total = total + set_numbers[row][column];
setAverage = total / (COLS * ROWS);
if(largestNum < set_numbers[row][column]){
largestNum = set_numbers[row][column];
}
}
printf("\n\tAverage of row [%d]: %.1f\t", row + 1, sum/COLS);
}
}
我似乎找不到找到我错过AF值或进行错误计算的地方。在为我的工程课程提交程序之前,这是我最后需要做的事情。我检查了其他一些stacoverflows,但没有发现有用的信息。
答案 0 :(得分:0)
您永远不会实例化两个变量(setAverage,largestNum)为初始值。如果它们是垃圾数据,那么负责设置maximumNum的不平等可能永远不会成立。不过,真正的问题是you're passing them by value,并希望它们在函数返回时得到更新。
答案 1 :(得分:0)
在函数arrayNumbers(set_numbers,row,column,setAverage,maximumNum);中 setAverage和maximumNum由值(https://www.geeksforgeeks.org/passing-by-pointer-vs-passing-by-reference-in-c/)传递。因此值将不会更新。
在arrayNumbers函数中,sum放在2个循环内。所以它只是该行的最后一个值。
答案 2 :(得分:0)
要回答OP的问题,我复制了您的代码并在onlinegdb上运行它。它提示我输入15次输入,这就是 inputdata 函数的作用。如果这是您要询问的问题,程序就坐在那里等待用户输入
我的程序不会从setAverage和 最大数字变量。我的编译器没有错误。我是什么 在这里失踪
对于这个特定的编译器,当两个数字都初始化为0时,它会为两个数字输出0,就像其他人所说的那样,您将必须通过指针传递而不是通过值传递。