循环遍历c中的数组

我想循环遍历一个最大值为1000的数组.我使用文本文件中的值填充数组.我试图循环遍历该数组,但在我的for循环中,我不知道数组的长度,所以我不知道在for循环语句的第二部分放什么.例如:我有一个名为:int scores [1000]的数组;我正在尝试迭代这个数组并将分数放入成绩类别.因此A = 90-100,B = 80-89,C = 70-79,D = 60-69,F = 0-59.

所以我不知道我的for循环会是什么样子:

for(int i = 0; i < ...; i++){

if(scores[i] > = 90 || scores[i] <= 100){

//Do stuff...

}

我想我也很困惑如何在最后获得每个类别的总计数.但在大多数情况下,它如何迭代这个数组.我知道sizeof(scores [])不会工作,因为这会给我int大小而不是数组本身的长度.提前谢谢!

解决方法

如果使用std :: vector( link),则可以添加元素并使向量动态更改大小.可以使用size()方法轻松查询该大小.如果你使用这样的数组,你必须自己跟踪它中的元素数量.

如果你有一个带有元素的向量文件,你的循环可能如下所示:

std::vector<int> scores;
// fill vector

for (unsigned int i=0; i<scores.size(); i++) {
  // use value
}

如果你必须使用数组并且实际上有一个scoreCount变量,其中包含了实数值,只需在循环中使用它:

for (int i=0; i<scoreCount; i++) {
  // use value
}

正如我在评论中提到的,第三个选项是使用您从未使用的值(通常为-1)初始化整个数组,然后将其用作填充与空数组位置的标记,如下所示:

for (int i=0; i<1000; i++) {
    scores[i] = -1;
}

// add real values to scores 

int i=0;
while (scores[i] != -1 && i < 1000) {
  // use value
  i++;
}

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...