我正在尝试编写一个简单的程序,该程序只需几分钟即可输入,然后通过一个函数将该输入转换为秒,然后返回更新后的值。
我试图进行调试并跟踪值,但是一切似乎都在进行。问题是当我在控制台中运行程序时。
#include <iostream>
using namespace std;
int convert(int minutes);
int main() {
//obj: write a function that takes in integer minutes and converts to secs
// inital values
int min = 0;
//only allow correct input
do {
cout << "\t\nPlease enter a number of minutes: ";
cin >> min;
} while (min < 0);
cout << "\t\nYou entered " << min << " minutes";
//conversion
convert(min);
cout << ", and that is " << min << " in seconds.\n";
system("PAUSE");
return 0;
}
int convert(int minutes) {
return minutes * 60;
}
例如,用户输入5。convert(5)
我希望能获得300,但是当下一个指令运行时,我会得到:
“您输入了5分钟,即5秒钟。”
编辑:谢谢您的帮助。我想去上学之前自学C ++(应对这些编程挑战),而且非常新。
#include <iostream>
using namespace std;
int convert_Min_to_Secs(int& minutes);
int main() {
//obj: write a function that takes in integer minutes and converts to secs
// inital values
int min = 0;
//only allow correct input
do {
cout << "\t\nPlease enter a number of minutes: ";
cin >> min;
} while (min < 0);
cout << "\t\nYou entered " << min << " minutes";
//conversion
int sec = convert_Min_to_Secs(min);
cout << ", and that is " << sec << " in seconds.\n";
system("PAUSE");
return 0;
}
int convert_Min_to_Secs(int& minutes) {
return minutes * 60;
}
将代码与您的建议固定在一起,但我想理解。当我初始化原始int min = 0时。然后我允许用户输入“ 2”。 然后min里面有'4'。
当它通过convert函数传递时,它是否在convert内又增加了一个分钟?或确切发生了什么。
答案 0 :(得分:0)
您正在按值传递增量:
int convert(int minutes)
因此minutes
被复制,然后您return
一个值:
return minutes * 60;
因此没有任何变化,并且新值丢失了:
convert(min);
如果您想更改minutes
,则可以通过引用传递:
void convert(int& minutes)
{
minutes *= 60;
}
然后:
convert(min);
实际上将min
更改为新值。但这相当令人费解和困惑。
因此,最好将convert
保持原样:
int convert(int minutes)
{
return minutes * 60;
}
并分配新值:
int sec = convert(min);
cout << ", and that is " << sec << " in seconds.\n";
答案 1 :(得分:0)
简单地说,您忘记将返回值分配给要打印的新变量...