以C++为单位乘以并显示数组的值
Multiplying and displaying the values of an array in C++
我正在尝试完成一个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
任何帮助或代码改进将不胜感激,因为弄清楚如何乘法和显示乘法值是完成练习唯一需要做的事情。提前谢谢你!
您的代码存在三个大问题:
1. 命名约定。不要将数组和临时 for 循环变量命名为相同的东西。这将导致一个进一步的问题,我将对此进行说明。
2. 不正确的运算符 正如 minterm 所提到的,您使用的是比较运算符而不是相等运算符。但仅凭这一点并不能解决您的问题。
3. 不访问数组值 您实际上并没有将数组值与乘数相乘。您必须访问元素,这意味着您不能从 1 开始索引。
for (int i = 0; i < 5; i++){
array[i] *= multiplier
cout << array[i] << endl;
}
use = 而不是 ==。目前,它只是计算逻辑语句,而不是将其设置为新值。 此外,您需要将 for 循环中的"int array"更改为不同的名称,以免将其与称为 array 的数组混淆。将 for 循环中的变量称为其他内容,例如"int i"。 因此,有问题的行将不是"数组==乘数*数组",而是类似于"int j =乘数*数组[i]",然后让它打印出j而不是数组。
更简单的方法是使用另一个基于范围的 for 循环而不是索引版本:
for (auto& a : array)
{
a *= multiplier;
std::cout << a << std::endl;
}
如果你不需要更新数组本身(毕竟,你的代码实际上并没有再次从数组中读取),那么你的一个非常相似,但更直接的版本可能适用:
for (const auto& a : array)
{
std::cout << a * multiplier << std::endl;
}
你有很多事情是不正确的。
首先是你的过度范围(可能不是正确的术语)
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 []
打印array
在 for 循环中,这样只会给你数组所在位置的地址。您必须打印出每个索引,或者在应用乘数后使用增强的 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;
}
- 显示错误输出的简单数组排序程序
- 显示数组中的学生 ID 和最高分
- 代码使用向量成功运行,但使用数组显示错误
- 对象初始化后在C++中显示 char 数组时的异常行为
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 在命令行上将输入显示到数组中时如何删除 ./a.out?
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 如何在函数中显示结构数组
- 显示结构数组
- 在数组中显示第一个元素用户输入
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 我编写了一个程序来显示数组的内容,但它显示的是它的地址
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作
- 将 5 个 for 循环压缩为,将数组显示为 1
- 为什么析构函数和复制构造函数使用对象数组显示此行为
- 在VC2010中使用Char数组显示字符串时发生运行时错误
- 将数组显示为表格
- 从boost::p roperty_tree读取数组显示为空白
- c++错误数组显示
- 二维动态数组c++显示问题