刚开始学习C++
Just started learning C++
>编写一个程序来帮助我计算总和。您的程序应该提示我输入数字,直到我完成(完成后,我将输入 -1(。然后,您的程序应打印出总和。
#include<iostream>
using namespace std;
int main()
{
double sum;
double number;
double total;
while (number !=-1)
{
cout<<"Input numbers: "<<endl;
cin>>number;
total+=number;
}
sum = total + number;
cout<<"The sum is "<<sum<<endl;
return 0;
}
例如,我输入 9 和 9,然后 -1 得到 25。我会让双倍总计 =2;它可以工作,但并不真正理解为什么它输出 25。我的代码出了什么问题?我刚开始学习感谢帮助。
>C++不会自动将声明的变量初始化为零,并且由于变量只是内存位置上的标签,因此您可以获得恰好存储在该位置的任何位的数值转换作为事实上的初始化。所以养成总是初始化变量的习惯:
double sum = 0;
double total = 0;
double number = 0;
请注意,这实际上只是您的总变量的问题,因为其他变量在用于操作之前都是赋值(通过 cin 和赋值运算符 =(。(编辑:错过了使用数字的while循环!请参阅评论(在声明时初始化仍然(总是(是一个好主意。
C++中缺少的是初始化。
如果在初始化变量之前使用它,则程序将具有未定义的行为。从那里开始,任何事情都可能发生。
您可以简单地解决它,
例如double sum = 0;
请记住对所有变量执行此操作。
你也不需要这一行:
sum = total + number;
total
已经是sum
了.
sum
、number
和total
都是未初始化的。这意味着他们在开始时不一定有0
。
要解决此问题,只需将它们设置为0
:
double sum = 0;
double number = 0;
double total = 0;
注意:我应该警告您,我不建议将浮点/双精度与像-1
这样的整数进行比较作为一般规则,因为它可能会发生意外行为。但是,我认为在这种情况下您应该没问题。但这不是保证。
除此之外,还有几句话,你应该初始化你的变量。
我认为您不喜欢从结果中减去 1。如果输入
-1
它将被添加到total
,然后 while 条件将被false
并且循环结束。因此,你的结果是错误的。你不需要
total
和sum
.使变量的范围尽可能小。
number
只需要循环体作为作用域。不要使用
using namespace std
。代码的格式很重要。我总是使用诸如 clang 格式之类的工具。
这是我对您的代码的重构:
#include <iostream>
int main() {
double sum = 0;
while (true) {
std::cout << "Input numbers: " << std::endl;
double number = 0;
std::cin >> number;
if (number == -1) {
break;
}
sum += number;
}
std::cout << "The sum is " << sum << std::endl;
return 0;
}
如果输入 -1,则会发生两件事:它使用该值来计算新的总和(减去 1(,并且在 while - } 之后,循环将退出并继续...... 此注释和其他注释将使您的程序正常工作。
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 神经网络不学习.卡在50%
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- 学习 c++,编译错误"no matching function for call"
- 学习数据结构和算法的简单方法
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- 学习嵌套循环C++与示例混淆
- 从书本中学习C++无法使该程序与类一起工作
- 刚开始学习C++
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- 学习时空复杂性时语句XYZ的含义是什么?
- Q学习扫雷行为
- 我可以在没有C++的情况下学习 Win32 API(仅使用 C)吗?
- 学习C,我的编译器已经知道bool(Visual Studio 2017)
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 试图学习指针,为什么要使用它们而不是仅仅使用&?
- Microsoft CNTK加强学习C 示例
- 与机器学习和小数据库进行分类