我有二維陣列,我想對列求和,并找到總和的最大值。我使用malloc陣列進行初始化。當程式完成時,我想列印結果,但結果與我期望的不同。
這是結果->
2 sum is -> 2 max is -> 4201200
5 sum is -> 7 max is -> 4201200
6 sum is -> 13 max is -> 4201200
8 sum is -> 8 max is -> 4201200
9 sum is -> 17 max is -> 4201200
6 sum is -> 23 max is -> 4201200
5 sum is -> 5 max is -> 4201200
9 sum is -> 14 max is -> 4201200
2 sum is -> 16 max is -> 4201200
max is 4201200 column 0
這是我的代碼--->
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int row = 3, col = 5;
int *a = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i )
for (j = 0; j < col; j )
*(a i * col j) = (rand() % (10 - 1 1)) 1;
printf("The array elements are:\n");
int sad;
int max1;
int sum = 0;
for (i = 0; i < row; i ) {
for (j = 0; j < row; j ) {
printf("%d ", a[j * col i]);
sum = a[j * col i];
printf("sum is -> %d max is -> %d\n", sum, max1);
}
if (sum > max1) {
printf("max is detected");
max1 = sum;
sad = j;
sum = 0;
}
sum = 0;
}
printf("max is %d column %d", max1, sad);
free(a);
return 0;
}
謝謝!
uj5u.com熱心網友回復:
max1未初始化,因此測驗if (sum > max1)沒有意義,max1可能無法正確更新。在您的情況下,max1碰巧有 value 4201200,但行為未定義,這可能是任何值,甚至可能是某些系統上的陷阱值。
由于所有矩陣元素都是正數,因此您可以初始化max1為0,否則您將使用INT_MIN在中定義<limits.h>或為第一列添加測驗。
此外,索引值i和j在第二個回圈中被交換,回圈測驗也不正確。
這是修改后的版本:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int rows = 3, cols = 5;
int *a = (int *)malloc(rows * cols * sizeof(int));
for (int i = 0; i < rows; i ) {
for (int j = 0; j < cols; j ) {
a[i * cols j] = (rand() % (10 - 1 1)) 1;
}
}
printf("The array elements are:\n");
for (int i = 0; i < rows; i ) {
for (int j = 0; j < cols; j ) {
printf(" -", a[i * cols j]);
}
printf("\n");
}
int max_col = 0;
int max_sum = 0;
for (int j = 0; j < cols; j ) {
int sum = 0;
for (int i = 0; i < rows; i ) {
sum = a[i * cols j];
}
printf("sum of column %i is -> %d\n", j, sum);
if (j == 0 || sum > max_sum) {
printf("max is detected\n");
max_sum = sum;
max_col = j;
}
}
printf("max is %d column %d\n", max_col, max_sum);
free(a);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415933.html
標籤:
上一篇:一個偶數和奇數放置的排序陣列
下一篇:交換2個排列的子序列的演算法
