我想计算数组中每个元素的数字之和。问题是这段代码只能计算数组中奇数索引(1,3,5...)的总和。而在控制台中,它显示了一些偶数索引(0,2,4...)的随机数。
谁能告诉我问题出在哪里?
是的,我需要用它作为数组
这里是输出值。
Enter how many numbers you want to calculate sum of digits: 5
Enter those numbers: 12
Enter those numbers: 33
Enter those numbers: 44
Enter those numbers: 22
Enter those numbers: 33
Sum of 0 number is: 4
Sum of 1 number is: 6
Sum of 2 number is: 40
Sum of 3 number is: 4
Sum of 4 number is: 11730950
#include <iostream>
int main(int argc, char** argv)
{
int n;
int temp;
int pom;
cout << "Enter how many numbers you want to calculate sum of digits: ";
cin >> n;
int numbers[n];
int sum[n];
for (int i = 0; i < n; i++)
{
cout << "Enter those numbers: ";
cin >> numbers[i];
}
for (int i = 0; i < n; i++)
{
while (numbers[i] > 0)
{
temp = numbers[i] % 10;
sum[i]+= temp;
numbers[i] = numbers[i]/10;
}
}
for (int i = 0; i < n; i++)
{
cout << "Sum of " << i << " number is: " << sum[i] << endl;
}
return 0;
}
你需要初始化 sum
数组,就像这样。
int sum[n] {};
否则,当你第一次从数组中读取一个元素时... sum
你有未定义的行为。
另外,可变长度数组不是标准C++的一部分。如果你在编译时不知道数组的大小,只需用一个 std::vector
.
如果你一定要使用一个数组,那么你需要动态分配它,就像这样。
int * arr = new int[n]{};