我试图创建一个代码,通过将数字放入数组并计算其中的数字来计算可被 9 整除的数字

Im trying to create a a code that count numbers divisible by 9 by putting numbers into an array and count the numbers in it

我试图创建一个代码,通过将数字放入数组并计算其中的数字来计算可被 9 整除的数字,但它只打印 1 而不是可被 9 整除的数字的数量请帮助我,我想使用数组来计算这些数字

#include <iostream>
using namespace std;
int main(){
    int a,b,i;
    int numbers[]={i};
    cin >>a>>b;
    for (i=a; i<=b; i++)
        if (i%9==0){
            cout << sizeof(numbers)/sizeof(numbers[0]);
        }        
}

您的代码中没有任何地方向数组添加数字。无论如何,不​​可能向数组添加元素,因为它们的大小是固定的。您的数组只有一个元素。

另外,int numbers[]={i};是未定义的,因为i还没有初始化。

此外,您的代码中 sizeof(numbers)/sizeof(numbers[0]) 的用途尚不清楚。 sizeof(numbers) 是单个 int 的大小,因为数组只有一个元素。 sizeof(numbers[0]) 也是单个 int 的大小。因此结果总是 1 。 (顺便说一句,它是一个编译时间常数。)

如果你想计算有多少数字满足某个条件,你最好使用计数器并在循环后打印它的值:

#include <iostream>

int main(){
    int a,b;

    cin >> a >> b;
    unsigned counter = 0;
    for (int i=a; i<=b; i++) {
        if (i%9==0){
            ++counter;
        }
    }
    std::cout << counter;
}

i want to use array for my learning porpuses please help me

您选择了错误的示例来训练使用数组,因为如前所述,数组具有固定大小。这是一个了解 std::vector 的机会。您可以在运行时向 std::vector 添加元素并查询其大小:

#include <iostream>
#include <vector>

int main(){
    int a,b;
    std::vector<int> by9divisables;
    std::cin >> a >> b;
    for (int i=a; i<=b; i++) {
        if (i%9==0) {
            by9divisables.push_back(i);
        }
    }
    std::cout << by9divisables.size();
}

但是,除了查看 std::vector 是如何工作的之外,向量在此代码中没有位置。上面可以看到,不用它也能得到结果

您的代码正在为找到的每个元素打印一个,因为您的数组中只有一个元素!

像这样打印 i:

#include <iostream>
using namespace std;
int main(){
    int a,b,i;
    //int numbers[]={i};
    cin >>a>>b;
    for (i=a; i<=b; i++)
    {
        if (i%9==0)
        {
            cout << "i: " << i << endl;
        }
    }
}

这个声明

int numbers[]={i};

声明了一个只有一个元素的数组,并用存储在变量 i 中的不确定值初始化它,因为变量 i 没有被初始化。

这个 if 语句的主体

    if (i%9==0){
        cout << sizeof(numbers)/sizeof(numbers[0]);
    }

没有意义,因为它总是输出数组 numbers 中只有一个元素的元素数。但是根据作业的描述,您必须将可被 9 整除的数字放入数组中。

由于用户可以为变量 ab 输入任意值,这意味着您需要一个可变长度数组。然而,可变长度数组不是标准的 C++ 功能。相反,您应该使用标准容器 std::vector.

程序如下所示

#include <iostream>
#include <vector>
#include <utility>

int main()
{
    int a = 0, b = 0;
    std::vector<int> numbers;

    const int divisor = 9; 

    std::cout << "Enter two integer numbers: ";
    std::cin >> a >> b;

    if ( b < a ) std::swap( a, b );

    for ( int i = a; not ( b < i ); ++i )
    {
        if ( i % divisor == 0 ) numbers.push_back( i );
    }

    std::cout << "There are " << numbers.size() 
              << " numbers divisible by " << divisor
              << " in the range [" << a << ", " << b << "]\n";

    if ( numbers.size() != 0 )
    {
        std::cout << "They are ";

        for ( const auto &n : numbers )
        {
            std::cout << n << ' ';
        }

        std::cout << '\n';
    } 
}