【发布时间】:2013-11-16 04:17:46
【问题描述】:
这个程序被设计成取一个整数和一个少于 15 个字符的名称,并将它们存储在数组中。
当输入 0 时,程序会显示数组的内容,然后终止。显然,这里有些不对劲……
#include <iostream>
#include <iomanip>
using namespace std;
bool getInput(int*, char(*)[15]);
void giveOutput(int*, char(*)[15]);
int main(void)
{
bool repeat = true;
int number[100] = {0};
char name[100][15];
do
{
repeat = getInput(number, name);
} while(repeat);
giveOutput(number, name);
return 0;
}
void giveOutput(int* number, char(*name)[15])
{
int i = 0;
while(number[i] != 0)
{
cout << endl << i << setw(6) << name[i];
i++;
}
cout << endl << endl;
return;
}
bool getInput(int* number, char(*name)[15])
{
int temp;
int i = 0;
for(; number[i] != 0; i++);
cin >> temp;
if(temp == 0)
return false;
number[i] = temp;
cin.getline(name[i], 15, '\n');
cin.clear();
cin.ignore(512, '\n');
return true;
}
对于解决此问题的任何帮助,我将不胜感激。程序未按预期执行;它不输出在数字后面输入的文本。 此外,这个网站不断向我发送垃圾邮件,告诉我我的问题主要是代码。所以我写了一堆乱七八糟的东西来安抚这该死的机器。希望这已经足够了,我终于可以发布我的问题了。
【问题讨论】:
-
欢迎堆栈溢出。您应该知道,通常用户希望人们在他们的问题上付出一些努力。如果您说明究竟是什么问题以及您尝试了什么,您将获得更好的机会。在您的情况下,您似乎是从使用调试器开始的。如果仍有问题,请尝试使用调试器并返回更多详细信息。
-
只是为了帮助格式化问题。尝试使用更小的代码片段,而不是整个代码。描述该程序的目的是什么以及它如何在问题中不起作用将极大地帮助那些试图帮助你的人。
-
对于初学者,您的输出函数只会输出您的索引 (
i) 和名称。