用C语言编写一个程序输出任意时间下一秒的时间

用C语言编写一个程序输出任意时间下一秒的时间,第1张

#include <stdioh>

#include <stdlibh>

#include <conioh>

enum DateType

{

  YEAR,

  MONTH,

  DAY,

  HOUR,

  MINUTE,

  SEC,

  MAX,

};

#define DUMMY 0

const char g_apcCnName[MAX]={"年","月","日","时","分","秒"};

int isLeapYear(int iYear)

{

  return ((iYear%4==0&&iYear%100!=0)||iYear%400==0);

}

int main()

{

  int i;

  int aiTime[MAX]={0};

  int aiTimeMaxValue[MAX]={9999,12,31,23,59,59};

  int aiTimeMinValue[MAX]={1970,1,1,0,0,0,};

  int aiMonthMaxDay[]={DUMMY,31,28,31,30,31,30,31,31,30,31,30,31};

  for(i=YEAR;i<MAX;++i)

  {

      printf("请输入%s",g_apcCnName[i]);

      scanf("%d",aiTime+i);

      if(MONTH==i&&isLeapYear(aiTime[YEAR]))

      {

          aiMonthMaxDay[2]=29;

      }

      if(DAY==i)

      {

        aiTimeMaxValue[DAY]=aiMonthMaxDay[aiTime[MONTH]];

      }

      if(aiTime[i]>aiTimeMaxValue[i]||aiTime[i]<aiTimeMinValue[i])

      {

          printf("输入数据不合法,请重新输入\n");

          i--;

      }

  }

  aiTime[SEC]++;

  for(i=SEC;i>YEAR;i--)

  {

      if(aiTime[i]>aiTimeMaxValue[i])

      {

          aiTime[i]=aiTimeMinValue[i];

          aiTime[i-1]++;

      }

  }

  printf("\n最后的输出结果是:");

  for(i=YEAR;i<MAX;i++)

  {

      printf("%d%s",aiTime[i],g_apcCnName[i]);

  }

  getch();

  return 0;

}

扩展资料:

用while和do…while循环时,循环变量的初始化的 *** 作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次。

而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,均可广义的把它们看成一个语句。

在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。

import javatextSimpleDateFormat;

import javautilDate;

public class Time {

public static void main(String[] args) {

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Systemoutprintln(simpleDateFormatformat(new Date()));

}

}

java 时间转换扩展

>

题目没说以什么为输入结束标志的话,一般默认是以EOF的。所以你可以将cin>>n>>b放到while循环的条件里,cin如果读到eof则返回0。

while(cin>>n>>b)

{

//字符串处理代码

}

也就是说把goto语句的跳转去掉。

当然你要是舍不得的话可以把把cin>>n语句用if(cin>>b) 代替掉,如果cin返回0即读到eof,则跳出循环。

另:不知道你们对c的要求严不严,最好不要出现goto语句。

另另:代码没仔细看,就针对你说的不知道以什么为结束标志提看了下

设计思想:

键盘输入一个时间HH:MM:SS

在SS基础上,自加1

如果第二步需要进位,那么在MM基础上自加1

如果第三步需要进位,那么在HH基础上自加1

如果第四步需要进位,那么整体回归到00:00:00

代码如下:

#include<stdioh>

#include<stringh>

int main() {

        int hh,mm,ss;

        scanf("%d:%d:%d",&hh,&mm,&ss);//键盘输入一个时间HH:MM:SS

        ss++;//秒数自加1

        if(60==ss){//60秒,需要进位

                ss=0;//秒数清0

                mm++;//分钟数自加1

                if(60==mm){//60分,需要进位

                        mm=0;//分钟数清0

                        hh++;//小时数自加1

                        if(24==hh){//24时,需要进位

                                hh=0;//小时数清0

                        }

                }

        }

        printf("%02d:%02d:%02d\n",hh,mm,ss);//按规定格式输出时分秒

        return 0;

}

运行结果

23:59:59

00:00:00

以上就是关于用C语言编写一个程序输出任意时间下一秒的时间全部的内容,包括:用C语言编写一个程序输出任意时间下一秒的时间、编写一个程序输出当前日期和时间,要求日期格式为“YYYY-MM-DD",时间格式为”HH:MM:SS"、写作业写了一个小程序,但是输出时间超限,求高手修改问题的算法,提高算法的效率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10120303.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存