C如何将值插入二维数组中

时间:2012-03-19 04:02:33

标签: c

我有以下代码让我疯了。我试图将值输入到二维数组中。

  1. 我真的不知道如何将值插入到数组中的特定位置。例如,我想以金字塔形式输入值。我应该能够在每个级别添加一个值。

    a[0][0]                     ===>          1
    a[1][0] & [1][1]  &[1][2]   ===>         2 3
    a[2][0] & [2][0]  & [2][2]   ===>       4 5 6  etc.
    
  2. 我还希望能够在每个级别存储最大的整数,以便我可以对每个级别中的所有大整数求和。

  3. 到目前为止,使用以下代码,我无法弄清楚如何插入值,而且我也无法对每个级别中的最大值求和。

    for(i = 0; i < 2; i++){
        for(j = 0; j <= 4; j++){
            printf("Enter the values in to the array");
            scanf("%d",&arr[i][j]);
        }
    }
    
    for(i = 0; i < 2; i++){
        for(j = 0; j <= 4; j++){
            if(arr[i][j] > arr[i][j+1]){
                holder = arr[i][j];
            }else{
                holder = arr[i][j+1];
            }
        }
        sum = sum+holder;
    }
    
    printf("%d\n\n",sum);
    

2 个答案:

答案 0 :(得分:0)

以金字塔形式输入值&amp;计算每行最大数量的总和,尝试下面的代码:

int arr[5][10];
int i,j;
int holder=0;
int sum = 0;

for (i=0;i<5;i++)
{
  for(j=0; j<=i;j++)
  {
     printf("Enter your input: \n");
     scanf("%d", &arr[i][j]);
     if(arr[i][j] > holder)
      {
         holder = arr[i][j];
      }
  }
 printf("Largest Value in Row %d is %d\n", i, holder);
 sum = sum + holder;
 holder = 0;
}
printf(" Sum = %d\n", sum);

答案 1 :(得分:-1)

尝试使用以下代码动态决定数组大小并分配值: -

int **arr;
int *greatest_each_lavel;
int n, i, j, temp;
printf ("enter the level.\n");
scanf ("%d", &n);

if (n<1)
{
  printf ("Wrong input.\n");
  exit (1);
}
greatest_each_level = (int *) malloc (n * sizeof (int));
arr = (int **) malloc (n * sizeof (int *));
for (i=1; i<=n; i++)
{
  arr[i] = (int *) malloc (i * sizeof (int));
}
// Populate the array members.
for (i=0; i<n; i++)
{
  temp = 0;
  for (j=0; j<=i; j++)
  {
    printf ("Enter the number  ");
    scanf ("%d", &arr[i][j]);
    if (arr[i][j] > k)
    {
      temp = arr[i][j];
    }
  }
  greatest_each_level[i] = temp;
}

// To get the sum of greatest number at each level
int sum = 0;
for (i = 0; i < n; i++)
  sum = sum + greatest_each_level[i];
printf ("Sum is : %d\n", sum);

// When all task are done, dont forget to free the memory.
for (i=0; i<n; i++)
{
  free (arr[i]);
}
free (arr);
free (greatest_each_level);
greatest_each_level = NULL;
arr = NULL;