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
    的赋值一起赋值。(我已经更新了代码)小心。如果所有元素/和都是负数,您将找不到最大的或正确的索引。(但在其他方面做得很好)