c ++:我想用数组进行算术运算,但它给了我凌乱的代码

时间:2016-04-18 17:22:55

标签: c++

#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.我的结果是这样的: enter image description here

我知道fillArray函数有问题,但我不知道如何修复它。谁能告诉我解决方案?感谢

1 个答案:

答案 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两次(覆盖它)。