A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Akrios 中级黑马   /  2015-4-16 21:55  /  2425 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入一个时间,输出这个时间后的下一秒
例如:
输入:  23:59:59     输出: 00:00:00
输入:  12:34:23     输出: 12:34:24


怎么都写不对 用了3个FOR循环 总是23:59:60

15 个回复

倒序浏览
  1. //
  2. //  main.c
  3. //  App
  4. //
  5. //  Created by 孙洋 on 15/4/16.
  6. //  Copyright (c) 2015年 sunyang. All rights reserved.
  7. //

  8. #include <stdio.h>

  9. int main(int argc, const char * argv[]) {
  10.     // insert code here...
  11.     int hour=0,min=0,sec=0,sum=0;
  12.     printf("请输入一个格式为 hh:mm:ss 的时间:\n");
  13.     scanf("%d:%d:%d",&hour,&min,&sec);
  14.     sum=hour*3600+min*60+sec;
  15.     if (!(++sum/86400)){
  16.         printf("下一秒是:%d:%d:%d",sum/3600,sum%3600/60,sum%3600%60);
  17.     }
  18.     else
  19.         printf("下一刻是00:00:00");
  20.     return 0;
  21. }
复制代码

——————————————————————————————————————————
如果我解决了你的问题,请按照这个帖子把问题改成已解决,这样你我都能得到技术分,谢谢
http://bbs.itheima.com/thread-85079-1-1.html
回复 使用道具 举报
楼上的 思维挺好的 但是方法不正确 结果不正确
回复 使用道具 举报
你这样能用c语言做么
回复 使用道具 举报
  1. //
  2. //  main.c
  3. //  时钟问题
  4. //  输入一个时钟数,输出下一秒的时间

  5. #include <stdio.h>

  6. int main(int argc, const char * argv[]) {
  7.    
  8.     int hour,minute,second;
  9.    
  10.     printf("请输入一个时间,以冒号隔开:");
  11.    
  12.     scanf("%d:%d:%d",&hour,&minute,&second);
  13.    
  14.     if (second == 59) {
  15.    
  16.         second = 0;
  17.         
  18.         minute++;
  19.         
  20.         if (minute == 60) {
  21.             
  22.             minute = 0;
  23.             
  24.             hour++;

  25.             if (hour == 24) {
  26.                
  27.                 hour = 0;
  28.             }
  29.         }
  30.     }
  31.     else{
  32.         
  33.         second++;
  34.     }

  35.    printf("%02d:%02d:%02d\n",hour,minute,second);
  36.    
  37.     return 0;
  38. }
  39. 这个如果用for循环做的话,我是想不出来,但是我用if的嵌套格式做出来了,楼上发的那个我感觉可以实现,但是在运行的时候输入23:59:59会输出24:61:0 。希望可以帮到你!

复制代码

点评

你写的比我写的容易理解  发表于 2015-4-17 16:35
写得挺好的 思维挺好 向你学习  发表于 2015-4-16 23:17

评分

参与人数 1黑马币 +1 收起 理由
舒少勇 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
没看懂你到底想要实现什么功能
回复 使用道具 举报
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int shi=0;
  5.     int fen=0;
  6.     int miao=0;
  7.    
  8.     printf("请输入时间值(用:隔开):\n");
  9.     scanf("%d:%d:%d",&shi,&fen,&miao);
  10.     if (miao <59)
  11.     {
  12.         miao++;
  13.     }else
  14.         
  15.     {
  16.         fen++;
  17.         miao=0;
  18.     }
  19.     if (fen==60)
  20.     {
  21.         shi++;
  22.         fen=0;
  23.     }
  24.     if(shi==24)
  25.     {
  26.         shi=0;
  27.     }
  28.     printf("下一秒是%02d:%02d:%02d\n",shi,fen,miao);
  29.     return 0;
  30. }
复制代码
不知道是不是你想要的。
回复 使用道具 举报
舒少勇 发表于 2015-4-16 23:10
楼上的 思维挺好的 但是方法不正确 结果不正确

我结果没有优化输出格式,加几个判断就好了。或者加一个数组,把结果存进去,打印的时候判断是不是0,是0就输出00,小于9就输出 0x
  1. int buff[3];
  2. buff[0]=sum/3600;
  3. buff[1]=sum%3600/60;
  4. buff[2]=sum%3600%60;
  5. for(int 1=0; i<3;i++)
  6. {
  7.      if(buff[i]==0)
  8.     printf("00:");
  9. if(buff[i]>0&&buff[i]<9)
  10. printf("0%d:",buff[i]);
  11. if(buff[i]>9)
  12. printf("d\n",buff[i]);

  13. }
复制代码


//把这段加上就对了,注意这段程序没有容错能力,需要检查用户输入才能防止输入不合法的时间值。这段代码我不准备加,因为我的代码主要是用来说明思路,想要什么效果自己加才是好的,程序还是自己多敲几遍才能是自己的,和诸位共勉
回复 使用道具 举报

你确定你输入正确了? 我测试的时候测试过23:59:59
输出结果是0:0:0
由于是格式问题我就没在改
回复 使用道具 举报

回复 使用道具 举报
sunyang 发表于 2015-4-17 16:32
我结果没有优化输出格式,加几个判断就好了。或者加一个数组,把结果存进去,打印的时候判断是不是0,是0 ...

是的 ,今天我也想了一下,你的那一段程序缺个判断,你的思路绝对是最牛的!我和室友看到后简直自愧不如!加油!

点评

谢谢哈,多交流  发表于 2015-4-17 21:28
回复 使用道具 举报
sunyang 发表于 2015-4-17 16:34
你确定你输入正确了? 我测试的时候测试过23:59:59
输出结果是0:0:0
由于是格式问题我就没在改 ...

恩  输入23:59:59 是对的 但是输入其他的 就不对了  不过你的这个想法非常好啊   你在if里面再判断下 就应该ok了
回复 使用道具 举报
mony 中级黑马 2015-4-20 22:35:30
13#
for循环没法做吧,楼主是不是想说用了三个if嵌套啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马