3

我正在学习数组,我想尝试的是首先让用户输入 x,y 值 4 次,例如

第一次

x = 1
y = 3

第二次

 x = 2
 y = 3

第三次

 x = 3
 y = 1

第四次

 x = 1
 y = 3

. 然后将用户在数组中输入 4 次的值存储并打印出来,但我得到了一些奇怪的输出。

我的输出

10001711642800 <-- some weird output

预期产出

1,3
2,3
3,1
1,3

代码(不工作)

      int x;
      int y;

     //request the user to enter x and y value 4 times.
     for (int i=1; i<5; i++) {
        cout << i << "Please enter x-cord." << endl;
        cin >> x;

        cout <<i << "Please enter y-cord." << endl;
        cin >> y;
    }
     //intitalize the array size and store the x,y values   
    int numbers[4][4] = { 
        x, y
    };
    //loop through 4 times to print the values.
    for (int i = 0; i<5; i++) {
        cout << numbers[i][i];
    }

我知道它可以用向量来完成,但现在我正在尝试使用数组,因为我在使用数组方面很弱。

4

4 回答 4

5

你在这里混淆了很多东西。

  1. 在您的for-loop 中,您将覆盖循环的每次迭代中存储的xy
  2. int numbers[4][4]创建一个包含总共 16 个元素的二维数组。你想要的是int numbers[4][2].
  3. 您的数组初始化不完整,因为x并且y仅包含用户输入的最后两个值,而不是全部 8。

要解决此问题,您应该在for-loop 之前创建数组,然后将用户直接输入的值存储到数组中。

于 2013-10-17T06:59:58.890 回答
4

使用此代码:

int numbers[4][2];
for(int i=0;i<4;i++)
{
   cout<<i<<": Please enter x-cord."<<endl;
   cin>>numbers[i][0];
   cout<<i<<": Please enter y-cord."<<endl;
   cin>>numbers[i][1];
}

for (int i = 0; i<4; i++) 
{
        cout << numbers[i][0]<<"   "<<numbers[i][1];
}
于 2013-10-17T06:59:28.407 回答
2

您没有将从用户收到的输入存储在任何数组中。它们在循环中一次又一次地被覆盖。将它们存储在一个数组中,然后显示它。

 //intitalize the array size and store the x,y values   
int numbers[4][4] = { 
    x, y
};

这不是必需的。由于您要覆盖数组的内容,因此无需使用一些随机变量对其进行初始化。事实上,这些变量x根本y不需要。

#include <iostream>

int main(int argc, char *argv[])
{
    // you need 4 arrays of 2 numbers, not 4x4 but 4x2
    int numbers[4][2] = { { } };        // initialize all of them to 0
    for (size_t i = 0; i < 4; ++i)
    {
        std::cout << "x = ";
        std::cin >> numbers[i][0];      // store the input directly in the array
        std::cout << "y = ";            // instead of using a dummy
        std::cin >> numbers[i][1];
    }

    // display array contents
    for (size_t i = 0; i < 4; ++i)
    {
        std::cout << numbers[i][0] << ", " << numbers[i][1] << std::endl;
    }
}
于 2013-10-17T06:57:25.810 回答
2

首先,你必须声明你需要填充的变量;

 // A new data type which holds two integers, x and y
 struct xy_pair {
     int x;
     int y;
 };

 // A new array of four xy_pair structs
 struct xy_pair numbers[4];

然后,您可以开始填充它。

 //request the user to enter x and y value 4 times.
 for (int i=1; i<5; i++) {
    cout << i << "Please enter x-cord." << endl;
    cin >> numbers[i].x;

    cout <<i << "Please enter y-cord." << endl;
    cin >> numbers[i].y;
}

然后,您可以打印它!

//loop through 4 times to print the values.
for (int i = 0; i<5; i++) {
    cout << "X is " << numbers[i].x << " and Y is " << numbers[i].y << endl;
}

PS!我自己没有运行代码,如果它不起作用,请告诉我。

于 2013-10-17T07:01:42.703 回答