我正在尝试使用二维数组来分配用户输入,该数组需要五个数字并将它们平方。程序应计算并存储阵列中每个用户的平方值。
我正在使用当前代码获得正确的输出,但我无法弄清楚如何将输入分配给数组,而不会在输出中出现错误。
#include <stdio.h>
int main(void)
{
int disp[2][5];
int x, y;
printf("Please enter 5 integer values:\n");
for(x=0; x<=2; x++) {
for (y=0; y<=5; y++) {
scanf("%d", &x);
printf("[ %d ][ %d ]\n", x, x*x);
}
}
return 0;
}
答案 0 :(得分:2)
以下代码扫描五个数字,并将数组存储在数组中(从不再使用):
#include <stdio.h>
#define NUM_ITEMS 5 // store the number of items in one place
int main()
{
int disp[2][NUM_ITEMS];
int i;
printf("Please enter %d integer values:\n", NUM_ITEMS);
for (i = 0; i < NUM_ITEMS; ++i) {
if ( scanf("%d", &disp[0][i]) == 1 ) {
// always check the return value of scanf()
disp[1][i] = disp[0][i] * disp[0][i]; // store squares in array
printf("[ %d ][ %d ]\n", disp[0][i], disp[1][i]);
}
else {
printf("Error in scanf()\n");
break;
}
}
return 0;
}
我正在尝试使用二维数组分配用户输入 需要五个数字并将它们平方。该程序应该计算和 存储数组中每个用户的平方值。
您的代码存在一些问题:
for(x=0; x<=2; x++) { // overflows array (0, 1 and 2)
// should be x < 2
for (y=0; y<=5; y++){ // idem -> y < 5
scanf("%d", &x); // scanf() is called 10 times
// x is already used as a loop counter!
printf("[ %d ][ %d ]\n", x, x*x);
// squares are never stored in the array
}
}
答案 1 :(得分:0)
如果您打算填充此数组disp[2][5];
,则可以输入2 * 5 = 10个整数。我认为这就是你的意图。请注意,您必须更改for循环条件以避免数组的索引溢出。
你必须改变如下:
printf("Please enter 10 integer values:\n");
for(x=0; x<2; x++)
{
for (y=0; y<5; y++){
scanf("%d", &disp[x][y]);
printf("[ %d ][ %d ]\n", disp[x][y], disp[x][y]*disp[x][y]);
}
}