鱼C论坛

 找回密码
 立即注册
查看: 3083|回复: 2

[已解决]题目:已知时、分、秒,以hh:mm:ss形式输出。

[复制链接]
发表于 2023-7-22 19:42:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:已知时、分、秒,以hh:mm:ss形式输出。
例如:时、分、秒分别为5、6、25,输出为:05:06:25
注意:请勿改动程序中的其他内容。
在/**********Program**********/





    /**********  End  **********/中填写程序

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>

void  handel(char a[], int n)
{
    int i=0;
    for (;n>0;)
    {
        a[i++,i] = n % 60;
        n = n/60;
    }
}
int main()
{
    int h, m, s, n, t, j;
    char a[10]={0};
    h=5,m=6,s=25;
    t = s + m*60 + h*3600;
    handel(a,t);
    n=0;
    /**********Program**********/





    /**********  End  **********/
    return 0;
}
最佳答案
1970-1-1 08:00:00
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-22 19:45:36 | 显示全部楼层
首先,我们要注意到问题实际上是要求我们以  hh:mm:ss  的格式输出已知的小时、分钟和秒。这里的关键是如何确保在小时、分钟和秒的数值小于10时,在前面添加一个'0'。

在你的  main  函数中,你已经将  h ,  m  和  s  分别转换为了总秒数  t ,然后将总秒数传递给  handel  函数。然而,将所有的秒数转换为一个一维数组可能并不是一个有效的解决方案,因为我们需要知道每个时间单位的确切值以便进行格式化输出。对于此问题,我建议直接在  main  函数中处理这个问题。

下面是对应的修改代码:

  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int h, m, s;
  5.     h=5, m=6, s=25;

  6.     /**********Program**********/

  7.     printf("%02d:%02d:%02d\n", h, m, s);

  8.     /**********  End  **********/
  9.     return 0;
  10. }
复制代码

解释:这个问题实际上是一个格式化输出的问题。在这里,我使用了  printf  函数的格式化功能。 %02d  代表输出的整数宽度为2,如果整数的位数不够2位,则在其左侧补零。因此,如果小时、分钟或秒的数值小于10,它们就会被输出为两位数,左侧补零。

例如,当小时、分钟和秒分别为5、6、25时, printf("%02d:%02d:%02d\n", h, m, s);  将输出  05:06:25 ,符合我们的要求。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 19:47:23 | 显示全部楼层
在指定的位置填写以下程序:


  1. for (j=0;j<i;j++)
  2. {
  3.     if (a[j]>=10)
  4.         printf("%d",a[j]);
  5.     else
  6.         printf("0%d",a[j]);
  7.     if (j<i-1)
  8.         printf(":");
  9. }
复制代码


完成后的完整程序如下所示:


  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. #include<ctype.h>
  5. #include<stdlib.h>

  6. void handel(char a[], int n)
  7. {
  8.     int i=0;
  9.     for (;n>0;)
  10.     {
  11.         a[i++,i] = n % 60;
  12.         n = n/60;
  13.     }
  14. }

  15. int main()
  16. {
  17.     int h, m, s, n, t, j;
  18.     char a[10]={0};
  19.     h=5,m=6,s=25;
  20.     t = s + m*60 + h*3600;
  21.     handel(a,t);
  22.     n=0;

  23.     // 输出结果
  24.     for (j=0;j<i;j++)
  25.     {
  26.         if (a[j]>=10)
  27.             printf("%d",a[j]);
  28.         else
  29.             printf("0%d",a[j]);
  30.         if (j<i-1)
  31.             printf(":");
  32.     }
  33.   
  34.     return 0;
  35. }
复制代码


程序将根据给定的时、分、秒进行计算,并以 hh:mm:ss 的格式输出。例如,对于时、分、秒分别为 5、6、25,输出结果为:05:06:25。请注意,程序中的其他部分不应进行修改。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表