【问题标题】:Loop ends after few inputs C++循环在几个输入后结束 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。不应要求您输入第三个名字。你是意味着你的循环条件是错误的。你应该看看那里。
  • 建议。不是三个数组,而是将信息聚合到一个数据结构中并存储该结构的单个数组。这通常会减少记账开销,并且往往更容易分类。

标签: c++ arrays loops


【解决方案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]输入值”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-03-19
    • 2015-06-07
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多