循环在几个输入后结束 C++
Posted
技术标签:
【中文标题】循环在几个输入后结束 C++【英文标题】:Loop ends after few inputs C++ 【发布时间】:2019-10-22 16:23:50 【问题描述】:循环应该询问三个人的姓名、年份和地址。输入第三个名字后,程序执行结束,无法输入上一年和地址。
#include <iostream>
int main()
std::string Names[2]=;
unsigned int Years[2]=;
std::string Address[2]=;
for(int i=0;i<=2;i++)
std::cout<<"Enter name >> ";
std::cin>>Names[i];
std::cout<<"Enter year >> ";
std::cin>>Years[i];
std::cout<<"Enter address >> ";
std::cin>>Address[i];
return 0;
【问题讨论】:
为什么你的数组只有两个元素长?他们不能容纳三个元素... 将阵列的大小设置为 3,以便可以容纳 3 人。 您的数组大小为2
。不应要求您输入第三个名字。你是意味着你的循环条件是错误的。你应该看看那里。
相关:https://***.com/questions/58506897/index-size-of-an-array
建议。不是三个数组,而是将信息聚合到一个数据结构中并存储该结构的单个数组。这通常会减少记账开销,并且往往更容易分类。
【参考方案1】:
使数组的大小为 3,索引从 0 到 2 例如
std::string Names[3]=;
【讨论】:
【参考方案2】:您需要声明大小为 3 的数组,因为我们知道像 2 这样的数组大小有多个地址,从 0 到 size-1。 在您的情况下,您的数组从 0 变为 1,如果您想插入 3 个人,则需要使用 3 作为数组的大小,这样您就可以使用地址 0,1 和 2。
std::string Names[3]=;
unsigned int Years[3]=;
std::string Address[3]=;
for(int i=0;i<=2;i++)
std::cout<<"Enter name >> ";
std::cin>>Names[i];
std::cout<<"Enter year >> ";
std::cin>>Years[i];
std::cout<<"Enter address >> ";
std::cin>>Address[i];
这样你就解决了问题
【讨论】:
在四个不同的地方使用同一个常量是很危险的,除非你定义一次。特别是如果 2 和 3 是相同的数字(在不同的上下文中)。【参考方案3】:问题是数组大小只有 2,而您在数组 [3] 中输入了一个永远不存在的值
【讨论】:
从技术上讲,OP 没有“向数组[3]输入值”。以上是关于循环在几个输入后结束 C++的主要内容,如果未能解决你的问题,请参考以下文章