C++ 秒分钟小时时为 0.

C++ Seconds Minutes Hours when 0

本文关键字:小时 分钟 C++      更新时间:2023-10-16

我是一个编程初学者,学习C++。

我有一些代码可以在几小时分钟和秒内给出输出。喜欢:

x hours y minutes z seconds

我想要的是,当x, y or z等于0时,不要显示它,所以:
30hours 0minutes 5seconds会变成:
30hours 5seconds .
我可以通过使用大量的 if 条件来做到这一点,但它变得非常混乱。如果有其他方法,请告诉我,因为我真的很想学习正确的方法

提前致谢

--编辑--这是我的实际代码

if (hours == 0 && mins == 0 && secs != 0) {
    cout <<  secs << "secs " << endl;
}
if (hours == 0 && mins != 0 && secs == 0) {
    cout << mins << "mins " << endl;
}
if (hours != 0 && mins == 0 && secs == 0) {
    cout << hours << "hours " << endl;
}
if (hours == 0 && mins != 0 && secs != 0) {
    cout << mins << "mins " << secs << "secs " << endl;
}
if (hours != 0 && mins == 0 && secs != 0) {
    cout << hours << "hours " << secs << "secs " << endl;
}
if (hours != 0 && mins != 0 && secs == 0) {
    cout << hours << "hours " << mins << "mins " << endl;
}
if (hours != 0 && mins != 0 && secs != 0) {
    cout << hours << "hours " << mins << "mins " << secs << "secs " << endl;
}

这有效,但我不认为这是实际程序员的做法。

这是秒到小时分钟秒转换器

void readabletime(const double a){
hours = a / 3600;
mins = (a/60 - hours * 60);
secs = (a - ((hours * 3600) + (mins * 60)));

---更新----我想到了一种更简单的方法来使用 3 个条件来做到这一点

if (hours != 0) {
    cout << hours << "hours";
}
if (mins != 0) {
    cout << mins << "mins"
}
if (secs != 0) {
    cout << secs << "secs"
}

尝试这样的事情:

if (hours > 0)
    cout << hours << "hours ";
if (minutes > 0)
    cout << minutes << "minutes ";
if (seconds > 0)
    cout << seconds << "seconds ";
cout << endl;

该代码应该执行您想要的操作,只有 3 个条件。如果所有值都为零,则仅打印一个新行。