我试图创建一个代码,通过将数字放入数组并计算其中的数字来计算可被 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
整除的数字放入数组中。
由于用户可以为变量 a
和 b
输入任意值,这意味着您需要一个可变长度数组。然而,可变长度数组不是标准的 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';
}
}
我试图创建一个代码,通过将数字放入数组并计算其中的数字来计算可被 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
整除的数字放入数组中。
由于用户可以为变量 a
和 b
输入任意值,这意味着您需要一个可变长度数组。然而,可变长度数组不是标准的 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';
}
}