我刚刚开始阅读C ++教科书,但我在本章末尾解决其中一个编码问题时遇到了问题。这是一个问题:
编写一个程序,要求用户输入小时值和分钟值。该 然后main()函数应将这两个值传递给显示的类型void函数 以下示例中显示的格式中的两个值:
输入小时数:9
输入分钟数:28
时间:9:28
#include <iostream>
using namespace std;
void time(int h, int m);
int main()
{
int hour, min;
cout << "enter the number of hours: ";
cin >> hour;
cout << "enter the number of minutes: ";
cin >> min;
string temp = time(hour, min);
cout << temp;
return 0;
}
void time(int h, int m)
{
string clock;
clock =
}
我现在在time(n, m)
函数中做什么?
感谢。
答案 0 :(得分:5)
您可以加入<iomanip>
并设置field width和fill,以便正确打印9:01
等时间。由于函数time
应该只打印时间,因此可以省略构建和返回std::string
。只需打印这些值:
void time(int hour, int min)
{
using namespace std;
cout << "Time: " << hour << ':' << setfill('0') << setw (2) << min << endl;
}
另请注意,在文件开头写using namespace std;
被认为是不好的做法,因为它会导致某些用户定义的名称(类型,函数等)变得模糊不清。如果您想避免使用std::
的前缀,请在小范围内使用using namespace std;
,以便其他功能和其他文件不受影响。
答案 1 :(得分:1)
问题请求“一个类型的void函数,它以显示的格式显示两个值”,因此最简单和最正确的(因为它与所要求的匹配)解决方案是:
void time(int h, int m)
{
cout << "Time: " << h << ":" << m << endl;
}
你的main()函数除了......之外什么都不做。
// ... prompt for values as before, then:
time(hour, min);
return 0;
}
然后返回。
答案 2 :(得分:0)
第一次()应该返回一个std :: string。要在time()中格式化字符串,可以使用std :: ostringstream(header sstream)。
例如:
std::string time(int hour, int minutes)
{
std::ostringstream oss;
oss << hour << ":" << minutes;
return oss.str();
}
编辑: 当然,您也可以直接在时间(..)函数内打印小时和分钟。或者您可以传递时间(..)函数也是一个流参数,让时间(..)在该流上打印出来。
答案 3 :(得分:0)
您在main中的代码假设time
是string
方法,问题是void
。你的代码应该是:
#include <iostream>
using namespace std;
void time(int h, int m);
int main()
{
int hour, min;
cout << "enter the number of hours: ";
cin >> hour;
cout << "enter the number of minutes: ";
cin >> min;
// Now pass to your time method.
time(hour, min);
return 0;
}
void time(int h, int m)
{
cout << "Time: " << h << ':' << m << endl;
}
鲍勃是某人的叔叔。