鱼C论坛

 找回密码
 立即注册
查看: 2535|回复: 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

下面是对应的修改代码:
#include<stdio.h>

int main() 
{
    int h, m, s;
    h=5, m=6, s=25;

    /**********Program**********/

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

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

例如,当小时、分钟和秒分别为5、6、25时, printf("%02d:%02d:%02d\n", h, m, s);  将输出  05:06:25 ,符合我们的要求。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

for (j=0;j<i;j++)
{
    if (a[j]>=10)
        printf("%d",a[j]);
    else
        printf("0%d",a[j]);
    if (j<i-1)
        printf(":");
}

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

#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;

    // 输出结果
    for (j=0;j<i;j++)
    {
        if (a[j]>=10)
            printf("%d",a[j]);
        else
            printf("0%d",a[j]);
        if (j<i-1)
            printf(":");
    }
  
    return 0;
}

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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