C++ C++;不以0开头的循环
所以,我一直在尝试创建一个简单的程序,它只需要一个空数组和一个大小,然后用从1到指定数字的数字填充它C++ C++;不以0开头的循环,c++,arrays,loops,C++,Arrays,Loops,所以,我一直在尝试创建一个简单的程序,它只需要一个空数组和一个大小,然后用从1到指定数字的数字填充它 #include <iostream> using namespace std; int* fill(int empty[], int size) { int i; for (i = 1; i < size; i++) { empty[i] = i; } return empty; } int main() { int
#include <iostream>
using namespace std;
int* fill(int empty[], int size) {
int i;
for (i = 1; i < size; i++) {
empty[i] = i;
}
return empty;
}
int main() {
int size;
cin >> size;
int* empty = new int[size];
fill(empty, size);
for (int i = 0; i < size; i++) {
cout << empty[i] << endl;
}
return 0;
}
注意它是如何用一个奇怪的负数替换0的吗?这是当我输入“30”作为数组大小时
当我将i的值设置为0时,它只是将负数替换为0。
有没有办法在一点启动阵列
谢谢。< /P> < P>如果数组中的数字开始循环从0开始(因为C++中的数组是零),只需将值设置为<代码> I+ 1 < /C> >而不是简单地<代码> i>代码>:/p>
int* fill(int empty[], int size) {
int i;
for (i = 0; i < size; i++) {
empty[i] = i + 1;
}
return empty;
}
int*填充(int-empty[],int-size){
int i;
对于(i=0;i
您应该知道数组的下标从0
开始,到size-1
。例如:
int a[10]; // The subscript is from a[0] to a[9]
如果您想要一个大小为sz
且下标从1
开始的数组,您可以这样做
constexpr int sz = 10;
int a[sz + 1];
然后,只需使用从
1
到sz
的下标范围,并忽略0
从索引1开始填充数组,然后从索引0开始输出。你期待什么
有没有办法在一点启动阵列
对。如果您需要size
元素,并且出于任何原因需要从索引1开始,那么您可以分配一个额外的元素:
现在,在所有后续操作中忽略元素0*。您还可以迭代到并包括size
:
for (i = 1; i <= size; i++) {
empty[i] = i;
}
那怎么办
int* fill(int empty[], int size) {
int i;
for (i = 0; i < size; i++) {
empty[i] = i + 1; // one more than the index
}
return empty;
}
int*填充(int-empty[],int-size){
int i;
对于(i=0;i
您需要将该值设置为比数组索引多一个。因此,数组索引从
0-size-1
开始计数,而值(i+1
)从1-size
开始计数 empty[0]
只是未初始化。for(i=1;i如果从填充数组开始,从1开始,打印时也应该从1开始。C/C++中的第一个索引总是0。无论如何,最好还是从0开始数组。我不会否决这个问题。当使用基于索引的数组时,你应该小心。考虑是否可以使用其他数据S。根据问题:当fill()方法中的int i为0时,它工作得非常好,但我想从1开始计算数字。您的回答是如何解决的?OP想从1开始数组中的数字-数组是基于零的(通常)-所以解决方法就是简单地将元素设置为i+1
啊,我没有看到。你应该更新答案来解释你在做什么以及它是如何解决问题的。我认为他想从1
开始填充数组的是数字,而不是数组索引。是的,我意识到了这一点并编辑了我的答案。我可以选择数组-我想是把东西索引出来了。
for (i = 1; i <= size; i++) {
empty[i] = i;
}
std::iota( empty, empty + size, 1 );
int* fill(int empty[], int size) {
int i;
for (i = 0; i < size; i++) {
empty[i] = i + 1; // one more than the index
}
return empty;
}