#include<iostream>
using namespace std;
//prototype
void fillArray(int[], int, int);
void printArray(int[], int);
int main()
{
srand(time(0)); // initialize random number generator
const int size = 5, SIZE=10;
int ar1[size], ar2[size],inc;
cout << "Enter the first value and increment for ar1: ";
cin >> ar1[0] >> inc;
cout << "Enter the first value and increment for ar2: ";
cin >> ar2[0] >> inc;
cout << "(1) ar1:\n";
fillArray(ar1, size, inc);
printArray(ar1, size);
system("pause");
return 0;
}
void fillArray(int ar[], int size, int inc)
{
for (int i = 1; i < size; i++)
{
ar[i] = ar[0] + inc;
cout << ar[size];
}
}
void printArray(int ar[], int size)
{
for (int i = 0; i < size; i++) {
cout << ar[i] << ' ';
}
cout << endl;
}
要求用户输入ar1 [0]和inc。第一个ar1 [0]由用户输入结算,其余的由inc.So增加。如果我输入4 3,则应返回4 7 10 13 16.我的结果是这样的:
我知道fillArray函数有问题,但我不知道如何修复它。谁能告诉我解决方案?感谢
答案 0 :(得分:0)
是的,您的功能fillArray
出了问题。它假定第一个元素已初始化(确实如此),但随后不按升序初始化其他元素,因为您总是将inc
添加到第一个元素的值。此外,它打印出ar[size]
,它在每一步都超出界限(输出中的第一个奇怪数字)。你可以解决这个问题:
void fillArray(int ar[], int size, int inc)
{
for (int i = 1; i < size; i++)
{
ar[i] = ar[i-1] + inc;
}
}
或者您也可以决定将第一个值作为参数传递。
我假设您要使用size
,即使您还声明另一个名为SIZE
的类似变量具有不同的值。您还应该考虑使用std::vector
而不是数组作为更安全的更实用的选项。
最后,在您的代码中,您要求用户在使用之前输入inc
两次(覆盖它)。