我正在尝试完成一个C ++练习,其中显示一个数组,并提示用户输入一个乘数,这将导致所显示的初始数字乘以用户的输入。这是我到目前为止的代码:
#include <iostream>
using namespace std;
int main()
{
int array[5] = { 1, 2, 3, 4, 5 };
for (const auto& a : array)
{
std::cout << a << std::endl;
}
double multiplier;
cout << "Input a multiplier: ";
cin >> multiplier;
for (int array = 1; array <= 5; ++array)
{
array == multiplier * array;
std::cout << array << std::endl;
}
}
运行时,它将打印正确的数组,并在每个数组值之后创建一个换行符,并提示用户输入乘数。但是,当输入乘数时,值不变。这是示例输出:
1
2
3
4
5
Input a multiplier: 2
1
2
3
4
5
目标是获得以下输出:
1
2
3
4
5
Input a multiplier: 2
2
4
6
8
10
任何帮助或代码改进都将受到赞赏,因为找出如何乘法和显示乘后的值是完成练习所需要做的唯一事情。预先谢谢你!
答案 0 :(得分:1)
您的代码存在三个大问题:
1。命名约定。 不要将数组和临时for循环变量命名为同一对象。这将导致进一步的问题,我将举例说明。
2。运算符不正确 正如minterm所提到的,您正在使用比较运算符而不是等于运算符。但这不能解决您的问题。
3。无法访问数组值 您实际上并没有将数组值与乘数相乘。您必须访问元素,这意味着您不能从1开始索引。
for (int i = 0; i < 5; i++){
array[i] *= multiplier
cout << array[i] << endl;
}
答案 1 :(得分:0)
使用=代替==。当前,它仅评估逻辑语句,而不是将其设置为新值。 另外,您需要将for循环中的“ int array”更改为其他名称,以免将其与称为array的数组混淆。在for循环中调用其他变量,例如“ int i”。 因此,所讨论的行将不是“ array == multiplier * array”,而是“ int j = multiplier * array [i]”之类的东西,然后打印出j而不是array。
答案 2 :(得分:0)
一种更简单的方法是使用另一个基于范围的for循环而不是索引版本:
for (auto& a : array)
{
a *= multiplier;
std::cout << a << std::endl;
}
如果您不需要更新数组本身(毕竟,您的代码实际上并不会再次从数组中读取),那么您可以使用一个非常相似的版本,但更直接的版本可能适用:
for (const auto& a : array)
{
std::cout << a * multiplier << std::endl;
}
答案 3 :(得分:0)
您正在进行的很多事情都是不正确的。
首先是您为
array
值设定的范围过大(也许不是正确的术语)。
您在for循环外声明了一个array
值,并且在for循环内又在计数器中使用了值array
。因此,您实际上并没有对阵列做任何事情。您实际上是在尝试对初始化变量进行操作。
第二个您使用==而不是=
您使用的是比较运算符(==)而不是赋值运算符(=),但还有其他很大的问题。
array
是int[5]
,而不仅仅是int
要实际修改数组的每个元素,您需要引用array[index]
来引用索引,其中index是0到length of array - 1
的值,因此是4。
您正在使用
double multiplier
,并尝试将其应用于int *
如果您尝试乘以2.5之类的双精度值,则您的数组值将是int值,而不是带有十进制值的数字。您应该将int array []
改成double array []
从索引0开始不访问数组
遍历数组时,第一个索引始终为0。您正在使用array = 1
和array <= 5
。这将跳过您的第一个索引,并在最后给出一个超出范围的索引。您应该改用int index = 0; index < 5; index++;
。
您正在尝试打印数组
由于array
是int []
,因此在for循环中打印array
只会为您提供数组所在的地址。应用乘数后,您将必须打印出每个索引或使用增强的for循环方法。
如果您想使用上述实现,请执行以下操作
for (int index = 0; index < 5; index++)
{
array[index] *= multiplier; // Or you can use array[index] = multiplier * array[index]
std::cout << array[index] << std::endl;
}