编写一个程序将24小时制的时间转化为12小时制的时间

img


没有&我还能理解,但是有了&以后我不太理解这个函数声明,也不明白它的变量是怎么回事,哪位能给我演示一下该怎么写,然后给我讲一下是什么意思

以下是完整的C++代码:

#include <iostream>
using namespace std;

void input(int& hours24, int& minutes) {
    cout << "Enter the time in 24-hour format (HH MM): ";
    cin >> hours24 >> minutes;
}

void convert(int& hours, char& AMPM) {
    if (hours > 12) {
        hours -= 12;
        AMPM = 'P';
    } else {
        AMPM = 'A';
    }
    
    if (hours == 0) {
        hours = 12;
    }
}

void output(int hours, int minutes, char AMPM) {
    cout << "The time in 12-hour format is: ";
    cout << hours << ":" << minutes << " " << AMPM << ".M." << endl;
}

int main() {
    int hours24, minutes;
    char AMPM = ' ';
    
    input(hours24, minutes);
    convert(hours24, AMPM);
    output(hours24, minutes, AMPM);
    
    return 0;
}

首先,我们定义了三个函数:input()convert()output()。这些函数分别用于输入时间、转换时间和输出时间。

input() 函数中,我们要求用户以“小时”和“分钟”为单位输入时间(24小时格式)。

convert() 函数中,我们将24小时格式的小时数转换为12小时格式的小时数,并设置字符变量AMPM表示是上午还是下午。

最后,在 output() 函数中,我们输出12小时格式的时间。

在主函数中,我们调用这三个函数以完成转换和输出。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/728803
  • 你也可以参考下这篇文章:涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现?
  • 除此之外, 这篇博客: 如何找到一个字符串的所有排列?中的 字符串全排列递归算法的改进 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 出现以上问题的原因,主要是因为相同的字符进行了多次交换。举个栗子abb,a固定时,后面的字符位置不变,得到abb,当第2个b和第3个b交换时,又得到了abb,解决这个问题的思路在于,在交换时进行判断,如果后面的字符有重复就不交换。当第i个字符和第j个字符交换位置时,判断范围是[i,j)是否有和j重复的数,代码如下:

    bool isSwap(char *list, int begin, int end) {
        for (int i = begin; i < end; i++){
            if (list[i] == list[end])
                return false;
        }
        return true;
    }
    #define SWAP(x,y,t) ((t) = (x),(x) = (y),(y) = (t))
    void perm(char *list, int i, int n){
        int j, temp;
        if (i == n) {
            printf("\t%s\n", list);
        }
        else {
            for (j = i; j <= n; j++){
                if (isSwap(list, i, j)) {
                    //使用宏定义,传的是数值,如果这的swap用函数实现,传的应该是指针
                     SWAP(list[i], list[j], temp);
                    //交互位置后,输出以list[j]不变,后面的字母改变的所有排列
                    perm(list, i + 1, n);
                    SWAP(list[i], list[j], temp);
                }   
            }
        }
    
    int main(){
        char list[] = "abc";
        perm(list, 0, strlen(list)-1);
    }

     

  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 我是选择网页应用还是小程序小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    解决问题方法:可以通过一定的计算和格式化字符串的操作来将24小时制的时间转化为12小时制的时间,具体可参考以下代码:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string convertTime(int hour, int minute) {
        string t = "";
        if (hour > 12) {
            t += to_string(hour-12) + ":" + to_string(minute) + " PM";
        } else {
            t += to_string(hour) + ":" + to_string(minute) + " AM";
        }
        return t;
    }
    
    int main() {
        int hour, minute;
        cout << "请输入24小时制的小时数:";
        cin >> hour;
        cout << "请输入分钟数:";
        cin >> minute;
        string t = convertTime(hour, minute);
        cout << "12小时制时间为:" << t << endl;
        return 0;
    }
    

    该程序中 convertTime 函数将给定的小时和分钟转化为12小时制的时间,并以字符串形式返回。程序通过 cin 获取用户输入并通过 cout 输出结果。

    函数声明:string convertTime(int hour, int minute)

    函数含义:将给定的小时和分钟转化为12小时制的时间,并以字符串形式返回。

    变量含义:hour 表示小时数,minute 表示分钟数。

    程序中自定义了一个将24小时制的时间转化为12小时制的时间的函数,并在 main 函数中调用。用户可以通过 cin 获取所需的24小时制时间(小时和分钟),并通过该函数将时间转化为12小时制的时间,并通过 cout 输出结果。

    在这个问题中,我们没有用到参考资料中的任何函数。