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



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

Word: Count 0
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个元素?谢谢

您的索引有误。在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基索引=>在定位基座之后没有额外的计算来找到第一个元件;(

如上所述,在C++中,数组索引是从零开始的。此外,您应该检查您是否真的有10个元素。"wordArr"one_answers"countArr"是未定义的,可能在其他地方声明。以下是我对你想要实现的目标的猜测。函数std::min((来自算法std库。

#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-向后(。

相关内容

最新更新