我的动态数组有问题。
练习如下:
让用户输入N个数字,并在用户输入数字-1时让程序停止。最后给出所有数字的总和。
示例:
1号: 10
2号: 10
3号: -1
数字的总和是:20。
我的代码正常工作,但它总是给出-1的总和,所以我的和的输出是19,而不是20。
这是我的代码:
int number = 0;
int sum=0;
int *array = new int[number];
do
{
cout <<"Number " << (i+1) << ": ";
cin >> array[number];
i++;
sum+=array[number];
} while (array[number] != -1);
cout <<"Sum of the numbers is: " << sum;
delete[] array;
如果我编辑我的:
cout << sum;
要:
cout << sum+1;
它完美无缺,但这并不是锻炼身体的正确方法。我想我的老师不会批准解决这个问题的方法。或者我认为解决这个问题的正确方法是什么?
我很想知道我的错误以及解决这个问题的正确方法。
谢谢!
答案 0 :(得分:1)
也许你可以这样做:
bool continue = true;
while(continue)
{
cout <<"Number " << (i+1) << ": ";
cin >> array[number];
i++;
if(array[number] == -1)
continue = false;
else
sum+=array[number];
}
试试这个让我知道;)
答案 1 :(得分:0)
初始化:
int number = 0;
int *array = new int[number];
给出一个0大小的数组。您无法访问其“第一个”元素
array[0]