【发布时间】:2021-09-24 04:13:14
【问题描述】:
#include <iostream>
#include <cmath>
using namespace std;
bool narcissistic(int value)
{
cout << "value is:" << value << endl;
int digitNumber = (log10(value) + 1);
cout << "Digit Number:" << digitNumber << endl;
int sum = 0;
int arr[5];
for (int i = 0; i <= digitNumber - 1; i++)
{
cout << "i digit:" << i << endl;
int exponential = pow(10, i);
arr[i] = (value % (exponential *10)) / pow(10, i);
cout << arr[i] << endl;
sum += pow(arr[i], digitNumber);
cout << pow(arr[i], digitNumber) << endl;
cout << i << "'th sum value:" << sum << endl;
}
return true;
}
int main() {
int value = 153;
narcissistic(value);
return 0;
}
在此代码中; 我不得不写:
int arr[5];
但我希望这个数组的大小是一个变量,以便可以定义它的大小,并且可以通过 for 循环放置它的值,因此它的大小可以等于循环的数量。 我想这样写:
for (int i = 0; i <= digitNumber - 1; i++)
{
int arr[i];
cout << "i digit:" << i << endl;
int exponential = pow(10, i);
arr[i] = (value % (exponential *10)) / pow(10, i);
cout << arr[i] << endl;
sum += pow(arr[i], digitNumber);
cout << pow(arr[i], digitNumber) << endl;
cout << i << "'th sum value:" << sum << endl;
}
Visual Studio 说数组作为长度的值必须是常数,这就是为什么你不能通过循环等来确定它。
有没有办法将变量作为大小放入数组中,并通过 C++ 中的循环分配数组的大小?
【问题讨论】:
-
使用
std::vector -
int arr[i];将arr定义为一个全新的变量,即variable-length array 其中aren't really a part of C++。对于具有非可移植和非标准扩展的编译器。它定义了一个包含i元素的数组。所以第一次迭代你有一个零元素数组。当您使用i作为索引时,它当然会越界。我猜您实际上并不想在循环内定义一个新变量arr? -
顺便说一句,你为什么需要
arr数组?您永远不会将数组作为一个整体使用。您可以将arr[i]替换为temp,并在循环的开头声明int temp;。 -
投资some good books 并上课。正确学习 C++ 和编程。
-
@PhysicsSolvesAll 与我在评论中所写的完全一样。但我想你想在循环终止后使用
arr数组。所以我之前的评论可能是毫无意义的。
标签: c++ arrays loops variables