循环在几个输入后结束 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++的主要内容,如果未能解决你的问题,请参考以下文章

退出循环,输入结束后

如何在循环结束后将输入传送到 Bash while 循环并保留变量

在向量循环 C++ 中终止字符串输入

1265 数据在几个值后截断第 1 行的列

C++输入多行数字到数组

Python学习之[while]循环