鱼C论坛

 找回密码
 立即注册
查看: 6704|回复: 15

[已解决]给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位...

[复制链接]
发表于 2017-11-26 13:02:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 as92097 于 2017-11-27 14:16 编辑

问题描述
  给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,如果小于10用0补到两位。
输入格式
  第一行一个数T(1< =T< =100,000),表示数据组数。后面每组数据读入一个数t,0< =t< 24*60*60。
输出格式
  每组数据一行,HH:MM:SS。
样例输入
2
0
86399
样例输出
00:00:00
23:59:59


求解,算法我会,但我不知道“输入格式
  第一行一个数T(1< =T< =100,000),表示数据组数。后面每组数据读入一个数t,0< =t< 24*60*60。” 的“T”是什么意思,以及“每组数据读入一个数t”该怎么表示
最佳答案
2017-11-29 19:23:57
本帖最后由 zqianglh 于 2017-11-29 19:38 编辑

#include<stdio.h>

int main(void) {
        int T = 0;
        int t, S, M, H;
        int a[7];
        while (true) {
                printf("请输入时间t:\n");
                scanf("%d", &t);
                if (t < 0 || t>24 * 60 * 60) {
                        printf("超出范围,程序退出!");
                        break;
                }
                ++T;
                a[0] = T;
                S = t % 60;
                M = (t / 60) % 60;
                H = t / 60 / 60;

                a[6] = S % 10;
                a[5] = S / 10;
                a[4] = M % 10;
                a[3] = M / 10;
                a[2] = H % 10;
                a[1] = H / 10;

                printf("计数T:%d %d%d:%d%d:%d%d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6]);

        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-26 23:18:29 | 显示全部楼层
小时 = t/60/60
分钟 = (t-(小时*60*60))/60
秒 = t-(小时*60*60 + 分钟*60)

输出格式:printf("%2d:%2d:%2d");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-27 13:57:59 | 显示全部楼层
qq1242009750 发表于 2017-11-26 23:18
小时 = t/60/60
分钟 = (t-(小时*60*60))/60
秒 = t-(小时*60*60 + 分钟*60)

我是没看懂输入格式
  第一行一个数T(1< =T< =100,000),这里的T是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-27 22:36:10 | 显示全部楼层
本帖最后由 qq1242009750 于 2017-11-27 22:55 编辑
as92097 发表于 2017-11-27 13:57
我是没看懂输入格式
  第一行一个数T(1< =T< =100,000),这里的T是什么


T就是秒数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-27 23:18:07 | 显示全部楼层

不对啊,“ 第一行一个数T(1< =T< =100,000),表示数据组数。”而t是T中的一个数据,但我没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-28 00:42:09 | 显示全部楼层
T 数据组数 就一个计数的
++T
T HH:MM:SS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-28 12:52:43 | 显示全部楼层
zqianglh 发表于 2017-11-28 00:42
T 数据组数 就一个计数的
++T
T HH:MM:SS

我看懂了,第一个输入的T是有多少个数据,但怎么用scanf来写代码。这T还是不固定的,能否教一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-28 22:38:40 | 显示全部楼层
本帖最后由 zqianglh 于 2017-11-29 03:02 编辑

第一步
先判断t值是否合法 0< =t< 24*60*60
取到 H M S值
S=t%60;
M=(t/60)%60;
H=M/60;

第二步 建一个数组a[] 填数
if(s<10) {
a[5] = s;
a[4] = 0;
}
else {
a[5]=秒%10;
a[4]=秒/10;
}
M分和H小时同上 填入a[0-5]6个数

第三步 按HH:MM:SS样式输出
输出T + 遍例数组个打印就行了
T HH:MM:SS

第四步
while(true) {
scanf("%d",&t);
if (t==一个退出条件886?100001?) {
                break;
        }
++T;每输入一个时间 记数就+1
判断T (1< =T< =100,000)
第一步
第二步
第三步
(如果要求记录已录入的t 把第二步用malloc分配存数组的内存空间/直用数组保存每个t  或其它)
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-29 10:34:45 | 显示全部楼层
zqianglh 发表于 2017-11-28 22:38
第一步
先判断t值是否合法 0< =t< 24*60*60
取到 H M S值

我想问一下,我不想做到“当T=2时,输入一个数据得到一个答案,再输入一个数据得到一个答案”;
而是想“T=2,连续输入两个数据,然后得到两个连续的答案”,这种程序有办法编写出来吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-29 12:19:00 | 显示全部楼层
本帖最后由 zqianglh 于 2017-11-29 12:40 编辑
as92097 发表于 2017-11-29 10:34
我想问一下,我不想做到“当T=2时,输入一个数据得到一个答案,再输入一个数据得到一个答案”;
而是想 ...


换下顺序就行了
比如用一个数组存储t
a[0]=t0=123456秒
a[1]=t1=456秒
a[2]=t2=23456秒
a[3]=t3=3456秒
a[4]=t4=1234秒
a[5]=t5=12345秒
。。。。。。

然后再整体取出 输出
前面的办法是存一个取一个
“T=2,连续输入两个数据,然后得到两个连续的答案”
整存整取就行了

(2)或 scanf(“%d %d”,&t1,&t2) 接收2个数据 输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-29 17:17:37 | 显示全部楼层
zqianglh 发表于 2017-11-29 12:19
换下顺序就行了
比如用一个数组存储t
a[0]=t0=123456秒

比较笨,没能看懂,我打出了代码,能帮我修改下吗,谢谢了。
#include <stdio.h>
#include <math.h>
int main()
{
        int HH,MM,SS,count;
        long long int T;
       
        do{
        scanf("%d",&T);
        }while(T<1||T>1000000);
       
        int  t[T];
        count = 1;
        do{
                do{
                scanf("%d\n",&t[count]);
                }while(t[count]<0||t[count]>= 24*60*60);
                HH = t[count]/60/60;
                MM = (t[count]-HH*60*60)/60;
                SS = t[count] - HH*3600 - MM*60;
                printf("%02d:%02d:%02d\n",HH,MM,SS);
                count ++;
        }while(count <= T);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-29 19:23:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zqianglh 于 2017-11-29 19:38 编辑

#include<stdio.h>

int main(void) {
        int T = 0;
        int t, S, M, H;
        int a[7];
        while (true) {
                printf("请输入时间t:\n");
                scanf("%d", &t);
                if (t < 0 || t>24 * 60 * 60) {
                        printf("超出范围,程序退出!");
                        break;
                }
                ++T;
                a[0] = T;
                S = t % 60;
                M = (t / 60) % 60;
                H = t / 60 / 60;

                a[6] = S % 10;
                a[5] = S / 10;
                a[4] = M % 10;
                a[3] = M / 10;
                a[2] = H % 10;
                a[1] = H / 10;

                printf("计数T:%d %d%d:%d%d:%d%d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6]);

        }
}
截图1511954961.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-29 20:55:15 | 显示全部楼层
获取小时
获取分钟
获取秒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 12:55:43 | 显示全部楼层
倒过来怎么写呢?以 hh: mm: ss 的形式给出同一天的两个时刻,打印出这两个时刻之间的秒数。以字符串的形式输入hh:mm:ss
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 13:32:00 | 显示全部楼层
#include<stdio.h>
int main(void) {
        int t, S, M, H,i;
        int a[7];
    for(i=0;i<2;i++)
    {
        for(i=0;i<6;i++)
    {
         scanf("%d",&a[i]);
    }
               
    S = a[4]*10+a[5];
    M = a[2]*10+a[3];
    H = a[0]*10+a[1];
    t=S+M*60+H*3600;
    printf("%d\n",t);

    }
   
              }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 13:33:09 | 显示全部楼层
但是上面那个不是以字符串输入的输入格式不对,输出的结果也不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 14:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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