我正在学习数组,我想要尝试的是首先让用户输入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];
}
我知道可以用向量完成,但现在我正在尝试使用数组,因为我在使用数组方面很弱。
答案 0 :(得分:5)
你在这里混淆了许多事情。
for
- 循环中,您将在循环的每次迭代中覆盖存储在x
和y
中的值。int numbers[4][4]
创建一个包含总共16个元素的二维数组。你想要的是int numbers[4][2]
。x
和y
仅包含用户输入的最后两个值,而不是全部8个。要解决此问题,您应该在for
- 循环之前创建数组,然后将用户直接输入的值存储到数组中。
答案 1 :(得分: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];
}
答案 2 :(得分: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;
}
}
答案 3 :(得分: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!我自己没有运行代码,如果它不起作用,请告诉我。