题目要求:
输出当前动态时间,包含年月日,时分秒和星期,居中显示.
tm结构定义了 年、月、日、时、分、秒、星期
用localtime获取当前系统时间,该函数将一个time_t时间转换成tm结构表示的时间函数原型:
struct tm * localtime(const time_t *)
代码中涉及的tm结构体相关内容(图片):
具体代码如下,注释很详细,我用的编译器是codeblocks,复制下面代码能直接出结果
#include<iostream>
#include<stdio.h> //scanf,printf
#include<ctime> //time()
#include<windows.h>//Sleep(),system()
using namespace std;
int main()
{
//srand(time(NULL)); //srand(seed),seed是种子,此处为time(NULL)
//for(int i = 0; i < 5; i++)
//printf("%d\n",rand()%100);//头文件都是stdlib.h
//获得1-100随机数,只用rand每次出现"随机数"一样
while(1)
{
time_t now = time(NULL);//这个语句放循环里,保证每次输出变化
//用time_t声明变量,获取当前秒数,即距离1970 01.01 00:00:00的秒数
//此处now是1970距离现在的秒数
tm time = *localtime(&now);//tm是结构体名,time是变量名,tm_year等是成员名
//localtime()函数返回指向tm结构的指针,本地时间
//返回的是距离1970/01/01 00:00:00的秒数
int year = time.tm_year + 1900; //变量名.成员名访问成员
int month = time.tm_mon + 1;
int day = time.tm_mday;
int hour = time.tm_hour;
int min = time.tm_min;
int sec = time.tm_sec;
int week = time.tm_wday;
printf("%3d:%02d:%02d\n",hour,min,sec);
printf("%4d/%02d/%02d\n",year,month,day);
printf(" 星期%d\n",week);//这里不能少%2d,否则会报错invalid conversion from int to const char*
Sleep(1000);//每1000毫秒显示一次
system("cls");//用来清屏,防止无限输出三行,当然也可一行输出,最后加个\r(只回车不换行)
}
return 0;
}
下面是运行结果:
秒数会不断变化
里面涉及的头文件有:#include<stdio.h>, #include<ctime>, #include<windows.h>
如果想获取随机数的话,可以这样:
//srand(time(NULL)); //srand(seed),seed是种子,此处为time(NULL)
//for(int i = 0; i < 5; i++)
//printf("%d\n",rand()%100);//头文件都是stdlib.h