首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++如何打印数组的前10个和最后10个元素?

C++如何打印数组的前10个和最后10个元素?
EN

Stack Overflow用户
提问于 2020-09-04 03:26:35
回答 2查看 2.6K关注 0票数 0

我试图打印数组的前10个和最后10个元素。下面的尝试在无限循环中返回以下内容

代码语言:javascript
复制
Word: Count 0
代码语言:javascript
复制
void printarrayString(std::string arr[], int size)
{
    int i;
    int j;

    std::cout << "***first 10 elements***" << std::endl;
    for (i = 10; i < size; i++)//print first 10 elements 
    std::cout << "Word: " << wordArr[i] << "  " << "Occurs: " << countArr[i] << std::endl;
    std::cout << std::endl;
    
    std::cout << "***last 10 elements***" << std::endl;
    for(j = 10; j < size-10; j-- ) //print last 10 elements
    std::cout << "Word: " << wordArr[i] << "  " << "Occurs: " << countArr[i] << std::endl;
    std::cout << std::endl;
}

如何修复循环,以便循环1打印wordArr和countArr的前10个元素,循环2打印最后10个元素?谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 03:33:51

你把指数搞错了。在C++中(甚至在大多数编程语言中),基元素或第一个元素位于索引0(想知道为什么吗?)。因此,要打印前n个元素,您需要从i = 0迭代到i = n - 1,也就是for(int i = 0; i < n; i++),并打印前n个元素,您需要从i = n - 1迭代到i = 0,也就是for(int i = n - 1; i >=0; i--)

基于

PS: 0的索引=>,不需要额外的计算来在定位基后找到第一个元素;)

票数 1
EN

Stack Overflow用户

发布于 2020-09-04 08:35:36

如上所述,在C++中,数组索引是基于零的.此外,您应该检查是否实际有10个元素。“wordArr”和“countArr”是未定义的,可能是在其他地方声明的。这是我猜你想要达到的目标。std::min()函数来自算法std库。

代码语言:javascript
复制
#include <algorithm>
#include <iostream>

using namespace std;

void printarrayString(string arr[], int size)
{
    //Check we have 10 elements. If not, use fewer
    int nElementsToPrint = min(10,size);

    //First 10 (if possible) elements
    for(int i =0; i < nElementsToPrint; i++)
    {
         cout << "Word: " << arr[i] << " Occurs: " << i;
    }
    cout << endl;

    //etc etc 
}

您可以以相同的方式处理最后10个元素,但是您还没有说过,如果您希望它们按照字符串中的顺序(从(size-nElementsToPrint)开始,然后用i++进行转发),或者先使用最后一个元素(从(size-1)开始,再向后执行i--)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63734393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档