对于多维数组,第一列中的用户输入值和第二列中显示的方块
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;
}
关于 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;
}