对于多维数组,第一列中的用户输入值和第二列中显示的方块

User-input values in first column with squares displayed in second column for multi-dimensional arrays

关于 C 语言中的多维数组,需要一点帮助。我正在尝试计算用户输入的每个值的平方。但是,我希望值和结果都显示为输出。

我正在为特定的行和列寻找类似这种格式的内容:

Value Squared

5     25
4     16
12    144
20    400
1000  1000000

到目前为止,我已经想出了以下代码,但它会产生错误 - “二进制操作数无效 (有 'int' 和 'int*'):

    #include <stdio.h>
    #define ROWS 5  //number of defined rows
    #define COLS 2  //number of defined columns

    int main(void)
    {
       int square[ROWS][COLS];
       int row, col, temp;
       printf("VALUE       SQUARED\n");
       for(row=0; row<ROWS; row++) 
       {
       //one row at a time
           printf("Enter value for square[%d]: ", row);
           scanf("%d", &square[row][1]);     //only first column with user-input
           temp = square[row]*square[row];   //compute square of each value
           printf("%5d %15d\n", square[row][temp]);
       }
      //printing values of an array
      for(row=0; row<ROWS; row++)
          for(col=0; col<COLS; col++)
            printf("\t%d", square[row][col]);
      printf("\n");

      return 0;
   }

实际上,"invalid operands to binary (have 'int' and 'int*')" 是由表达式 square[row]*square[row] 引起的,其中 square[row] 仅使用一个索引,因此 int* 的类型试图求平方。第二个索引需要具有 int.

类型

但是...

为什么使用temp作为索引?

而不是

temp = square[row]*square[row];
printf("%5d %15d\n", square[row][temp]);

应该是

square[row][0] = square[row][1]*square[row][1];
printf("%5d %15d\n", square[row][1], square[row][0]);

请注意,在我的示例中 square[row][0] 是使用(与 [0]),但实际上我认为您打算使用 square[row][0] 作为 VALUE,使用 square[row][1] 作为SQUARED,但是您忘记了在 C 中索引从 0 开始的事实。因此,为了让您的代码的最后一部分正常工作,请更改 "input part" 并将 header 的输出带到 table 紧接在 "output part"

之前的位置
#include <stdio.h>
#define ROWS 5  //number of defined rows
#define COLS 2  //number of defined columns

int main(void)
{
   int square[ROWS][COLS];
   int row, col, temp;

   // "input part"
   for(row=0; row<ROWS; row++) 
   {
       // TODO: type this again after reading my aswer above
   }
   // "output part"
   printf("VALUE       SQUARED\n");
   for(row=0; row<ROWS; row++)
   {
      for(col=0; col<COLS; col++)
        printf("%10d", square[row][col]);
      printf("\n");
   }

   return 0;
}