0

我正在尝试创建一个程序,询问用户他们有多少婴儿,收集有关每个婴儿的输入,然后将其显示在控制台上。我已经完成了 90% 的路,但我被卡住了。

控制台上的输入/输出应该是这样的;

请输入婴儿数量:2

请输入宝宝#1的身高:21.5

请输入宝宝#2的身高:19.75

宝贝 #1 的信息:身高:21.5 英寸

宝贝 #2 的信息:身高:19.75 英寸

我的代码输出一直显示 19.75 作为两个婴儿的身高。我意识到我可能需要使用指针为 aBaby.height 动态分配不同的值,但我之前没有在结构中使用过指针。任何帮助将不胜感激。

#include <iostream>
using namespace std;

struct Baby {
double length;
};
int main ()
{    
int iNumBaby = 0;

cout<<"Please enter the number of babies: ";
cin>>iNumBaby;
cout<<endl;
Baby aBaby;

Baby* pBaby = new Baby[iNumBaby];

for(int i = 0; i < iNumBaby; i++)
{
cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
cin >> aBaby.length;
cout << "\n";
}  
for(int i = 0; i < iNumBaby; i++)
{
cout << "\Baby #"<<i + 1<<"'s info:\n";
cout << "Height: " <<aBaby.length<<" inches"<<endl;
cout << "\n";
}
system("PAUSE");  
delete[] pBaby;
return 0;
}
4

2 回答 2

1

这与指针无关,您的代码中只是有一个错误。请参见以下块:

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
    cin >> aBaby.length;
    cout << "\n";
}

这里的主要问题是您aBaby.length每次都在存储条目。事实上,您从未pBaby在代码中的任何地方使用过。我假设这就是你想要的:

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Please enter baby #" << i + 1 << "'s height <inches>: ";
    cin  >> pBaby[i].length;
    cout << "\n";
}

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Baby #" << i + 1 <<"'s info:\n";
    cout << "Height: " << pBaby[i].length << " inches" << endl;
    cout << "\n";
}
于 2013-03-07T03:41:39.570 回答
1
for(int i = 0; i < iNumBaby; i++)
{
cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
cin >> aBaby.length;
cout << "\n";
}  

问题在于您对 aBaby.length 的分配。您将每个婴儿的长度分配给同一个对象。尝试访问您创建的婴儿数组并更改它们的长度。例子:

cin >> pBaby[i].length
于 2013-03-07T03:42:04.727 回答