C 如何知道哪一行的总和最大
我写这个程序是为了求每一行的和,并找到和最高的那一行。然而,每行的总和执行得非常完美,但我无法显示最高的总和C 如何知道哪一行的总和最大,c,arrays,C,Arrays,我写这个程序是为了求每一行的和,并找到和最高的那一行。然而,每行的总和执行得非常完美,但我无法显示最高的总和 #include<stdio.h> int main() { int type[5][3]={{3,31,19},{34,2,1},{0,0,9},{3,0,6},{11,9,5}}; for(i=0;i<5;++i) { for(j=0;j<3;++j) { sum=sum+ty
#include<stdio.h>
int main()
{
int type[5][3]={{3,31,19},{34,2,1},{0,0,9},{3,0,6},{11,9,5}};
for(i=0;i<5;++i)
{
for(j=0;j<3;++j)
{
sum=sum+type[i][j];
if((sum=sum+type[i][j])>(sum=sum+type[i+1][j]))
{
printf("%d type is highest",i);
}
}
printf("Total sumt %d=%d\n",i+1,sum);
sum=0;
}
}
#包括
int main()
{
int类型[5][3]={3,31,19},{34,2,1},{0,0,9},{3,0,6},{11,9,5};
对于(i=0;i,您的程序有以下错误:
#include <stdio.h>
int main(void) {
int arr[][3] = {{3, 31, 19}, {34, 2, 1}, {0, 0, 9}, {3, 0, 6}, {11, 9, 5}};
size_t len = sizeof(arr) / sizeof(arr[0]);
int sum = 0, largest = 0, index = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < 3; j++) {
sum += arr[i][j];
if (sum > largest) {
largest = sum; // getting the largest number
index = i; // getting the index of the largest number
}
}
printf("The sum of %d is: %d\n", i + 1, sum);
sum = 0;
}
printf("Highest: %d with %d\n", largest, index);
return 0;
}
#include <stdio.h>
#define ROW 2
#define COLUMN 3
int main(void)
{
int type[ROW][COLUMN] = { {1, 2, 3}, {4, 5, 6}};
int sum[ROW] = {0, 0};
int i, j, row = 0, highest = 0;
for ( i = 0; i < ROW; ++i)
for ( j = 0; j < COLUMN; ++j)
sum[i] += type[i][j];
for ( i = 0; i < ROW; ++i)
if(highest < sum[i])
{
highest = sum[i];
row = i;
}
printf("Row %d has the highest sum value %d.\n", row, highest);
return 0;
}
如果((sum=sum+type[i][j])>(sum=sum+type[i+1][j]))
将超出数组的界限
最高值必须打印在所有循环之外,并在循环执行期间分配
您可以使用正确的程序:
#include <stdio.h>
int main(void) {
int arr[][3] = {{3, 31, 19}, {34, 2, 1}, {0, 0, 9}, {3, 0, 6}, {11, 9, 5}};
size_t len = sizeof(arr) / sizeof(arr[0]);
int sum = 0, largest = 0, index = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < 3; j++) {
sum += arr[i][j];
if (sum > largest) {
largest = sum; // getting the largest number
index = i; // getting the index of the largest number
}
}
printf("The sum of %d is: %d\n", i + 1, sum);
sum = 0;
}
printf("Highest: %d with %d\n", largest, index);
return 0;
}
#include <stdio.h>
#define ROW 2
#define COLUMN 3
int main(void)
{
int type[ROW][COLUMN] = { {1, 2, 3}, {4, 5, 6}};
int sum[ROW] = {0, 0};
int i, j, row = 0, highest = 0;
for ( i = 0; i < ROW; ++i)
for ( j = 0; j < COLUMN; ++j)
sum[i] += type[i][j];
for ( i = 0; i < ROW; ++i)
if(highest < sum[i])
{
highest = sum[i];
row = i;
}
printf("Row %d has the highest sum value %d.\n", row, highest);
return 0;
}
您有许多问题。i
和j
未声明,并且您使用type[i+1][j]
阅读了type
的末尾。您必须修复这两个问题
要找到最大的和,您需要一个单独的变量来保存看到的和中的最大值,然后在退出最后一个循环后,输出最大的和,例如
(更新以包括出现最大总和的行)
如果您还有其他问题,请告诉我。将int type[5][3]
中所有5行的总和存储在任何数组中,比如sum[5]
,然后找到它们中最高的一行,然后打印它们的索引+1
编号。显示这一行的总和最高
#include<stdio.h>
int main()
{
int type[5][3]={{3,31,19},{34,2,1},{0,0,9},{3,0,6},{11,9,5}};
for(i=0;i<5;++i)
{
for(j=0;j<3;++j)
{
sum=sum+type[i][j];
if((sum=sum+type[i][j])>(sum=sum+type[i+1][j]))
{
printf("%d type is highest",i);
}
}
printf("Total sumt %d=%d\n",i+1,sum);
sum=0;
}
}
示例:
#include <stdio.h>
int main(void) {
int arr[][3] = {{3, 31, 19}, {34, 2, 1}, {0, 0, 9}, {3, 0, 6}, {11, 9, 5}};
size_t len = sizeof(arr) / sizeof(arr[0]);
int sum = 0, largest = 0, index = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < 3; j++) {
sum += arr[i][j];
if (sum > largest) {
largest = sum; // getting the largest number
index = i; // getting the index of the largest number
}
}
printf("The sum of %d is: %d\n", i + 1, sum);
sum = 0;
}
printf("Highest: %d with %d\n", largest, index);
return 0;
}
#include <stdio.h>
#define ROW 2
#define COLUMN 3
int main(void)
{
int type[ROW][COLUMN] = { {1, 2, 3}, {4, 5, 6}};
int sum[ROW] = {0, 0};
int i, j, row = 0, highest = 0;
for ( i = 0; i < ROW; ++i)
for ( j = 0; j < COLUMN; ++j)
sum[i] += type[i][j];
for ( i = 0; i < ROW; ++i)
if(highest < sum[i])
{
highest = sum[i];
row = i;
}
printf("Row %d has the highest sum value %d.\n", row, highest);
return 0;
}
#包括
#定义第2行
#定义第3列
内部主(空)
{
int类型[行][列]={{1,2,3},{4,5,6};
整数和[行]={0,0};
int i,j,行=0,最高=0;
对于(i=0;i|
int max=int_MIN;
(在stdlib.h
中)然后在计算和退出内部循环后,如果(sum>max)max=sum;
然后在外部循环完成后输出max
。您应该在之后立即声明和初始化int sum=0;
,以(i=0;i未定义的行为:if((sum=sum+type[i][j])>(sum=sum+type[i+1][j]))
。为什么只测试值的作业?@DavidC.Rankin如何显示i的索引?我实际上还必须显示i的索引以及biggestAdded跟踪出现最大和的行来回答。我如何打印i的索引以及最大值?@brogrammer只需声明一个变量,假设index
并在if条件下将i
的值与sum
的赋值一起赋值。(我已经更新了代码)小心。如果所有元素/和都是负数,您将找不到最大的或正确的索引。(但在其他方面做得很好)