精华内容
下载资源
问答
  • 这是一道看似很简单的有关C语言时间差问题,其实需要考虑的东西还蛮多的!!! 举个栗子,思考一下 如果单纯地小时与小时相减,分钟与分钟相减; 2点20-1点10分=1小时10分钟 3点10分-2点50分=1小时负40分钟(这就...

    在这里插入图片描述这是一道看似很简单的有关C语言的时间差问题,其实需要考虑的东西还蛮多的!!!
    举个栗子,思考一下
    如果单纯地小时与小时相减,分钟与分钟相减;
    2点20-1点10分=1小时10分钟
    3点10分-2点50分=1小时负40分钟(这就不是我们想要的正确答案了)
    解决方案:
    我们可以将两个时间(几时几分)换算成分钟,然后再将分钟换算成几小时几分钟。代码如下:

    #include<stdio.h>
    #include<math.h>
    int main(){
    	int hour1,minute1;
    	int hour2,minute2;
    	int final_hour,final_minute;
    	
    	printf("请输入第一个时间:");
    	scanf("%d %d",&hour1,&minute1);
    	printf("请输入第二个时间:");
    	scanf("%d %d",&hour2,&minute2);
    	
    	final_hour=abs((hour2*60+minute2)-(hour1*60+minute1))/60;//小时部分 
    	final_minute=abs((hour2*60+minute2)-(hour1*60+minute1))%60;//分钟部分 
    	
    	if(final_hour==0){
    		printf("%d点%d分与%d点%d分的时间差为%d分钟:",hour1,minute1,hour2,minute2,final_minute);
    	}else{
    		printf("%d点%d分与%d点%d分的时间差为%d小时%d分钟:",hour1,minute1,hour2,minute2,final_hour,final_minute);
    	}
    	
    	return 0; 
    } 
    

    最后的判断语句

    if(final_hour==0){
    		printf("%d点%d分与%d点%d分的时间差为%d分钟:",hour1,minute1,hour2,minute2,final_minute);
    	}else{
    		printf("%d点%d分与%d点%d分的时间差为%d小时%d分钟:",hour1,minute1,hour2,minute2,final_hour,final_minute);
    	}
    

    这部分是为了避免出现0小时几分钟这种情况。
    最后
    分享我从别人那里学到的小干货,C语言中的取绝对值函数:

    1. int型使用abs();
    2. long型使用labs();
    3. float,double型使用fabs();
    展开全文
  • 写一个简单的程序,我需要一个vc的函数。...输出:返回两个时间,表示的是时间段,精确到毫秒,返回结果是 1:23:38 778 > 注意,输入的最好是时间类型的 比如CTime 以及其他类的时间类型 ****
  • 一、时间相关说明 格林威治时间表示0时区的标准时间。其他时区的时间和此标准时间均...二、标准C语言时间函数 1、time(取得本地目前的时间秒数) #include time_t time(time_t *t); 函数说明 此函数会返回从公元

     一、时间相关说明

    格林威治时间表示0时区的标准时间。其他时区的时间和此标准时间均有时间差。UTC(Universal Time Coordinated)是世界协调时间,是格林威治时间在互联网中的表示方法

    二、标准C语言时间函数

    1、time(取得本地目前的时间秒数)

    #include

    time_t time(time_t *t);

    函数说明  此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒(Epoch,linux纪元)算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

    返回值  成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。

    time_t 定义为long int

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t time1 = 0;
        long int time2 = 0;
    
        //time()函数传入的参数时NULL,函数返回值是1970年到现在经过的秒数
        time1 = time(NULL);
        printf("time1=%ld\n",time1);
    
        //time()函数传入的参数时time2的地址,返回1970年到现在经过的秒数给time2的内存
        time(&time2);
        printf("time2=%ld\n",time2);
    
        return 0;
    }
    
    

    执行的结果为:

    time1=1514297416

    time2=1514297416



    2.ctime(将时间和日期以字符串格式表示) 

    #include

    char *ctime(const time_t *timep);

    函数说明  ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30 21 :49 :08 1993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

    返回值  返回一字符串表示目前当地的时间日期。

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t timeValue = 0;
        char *str = NULL;
    
        timeValue = time(NULL);
        str = ctime(&timeValue);
        printf("时间字符串 = %s\n",str);
    
        return 0;
    }
    
    

    结果:

    时间字符串 = Tue Dec 26 22:22:53 2017

    在介绍其他时间函数之前先要了解一个C语言已经定义的结构体struct tm

    struct tm

    {

    int tm_sec;

    int tm_min;

    int tm_hour;

    int tm_mday;

    int tm_mon;

    int tm_year;

    int tm_wday;

    int tm_yday;

    int tm_isdst;

    };

    int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒

    int tm_min 代表目前分数,范围0-59

    int tm_hour 从午夜算起的时数,范围为0-23

    int tm_mday 目前月份的日数,范围01-31

    int tm_mon 代表目前月份,从一月算起,范围从0-11

    int tm_year 从1900 年算起至今的年数

    int tm_wday 一星期的日数,从星期一算起,范围为0-6

    int tm_yday 从今年1月1日算起至今的天数,范围为0-365

    int tm_isdst 日光节约时间的旗标


    3.gmtime(根据本地时间取得目前的UTC时间)

    #include

    struct tm*gmtime(const time_t*timep);

    函数说明  gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

    此函数返回的时间日期未经时区转换,而是UTC时间(格林尼治时间,北京时间晚8个小时,所以)。

    返回值  返回结构tm代表目前UTC 时间

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t timeValue = 0;
        struct tm *p = NULL;
    
        time(&timeValue);
        p = gmtime(&timeValue);
        printf("现在的时间(UTC)是 = %d年%d月%d日 星期%d %d时%d分%d秒 \n",
               p->tm_year+1900,
               p->tm_mon+1,
               p->tm_mday,
               p->tm_wday,
               p->tm_hour,
               p->tm_min,
               p->tm_sec);
    
        return 0;
    }
    
    

    输出的结果:

    现在的时间(UTC)是 = 2017年12月26日 星期2 14时47分21秒

    现在本地时间是:

    所以与北京时间相差8个小时


    4.localtime(取得当地目前UTC时间和日期) 

    #include

    struct tm *localtime(const time_t * timep);

    函数说明  localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。

    返回值  返回结构tm代表目前的当地时间。

    再次说明:这个函数返回的时期已经转换成本地时间。

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t timeValue = 0;
        struct tm *p = NULL;
    
        time(&timeValue);
        p = localtime(&timeValue);
        printf("现在的时间(已转为本地时间)是 = %d年%d月%d日 星期%d %d时%d分%d秒 \n",
               p->tm_year+1900,
               p->tm_mon+1,
               p->tm_mday,
               p->tm_wday,
               p->tm_hour,
               p->tm_min,
               p->tm_sec);
    
        return 0;
    }
    
    

    
    
    
    
    
    

    结果:现在的时间(已转为本地时间)是 = 2017年12月26日 星期2 22时59分19秒

    5.

    asctime(将时间和日期以字符串格式表示) 

    #include

    char * asctime(const struct tm * timeptr);

    函数说明  asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n”

    返回值  若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。

    附加说明  返回一字符串表示目前当地的时间日期。

    对比分析:asctime()和ctimed都是将时间转换为日期的字符串,ctime()转换的是时间的秒数,asctime()转换的是tm结构体中的时间

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t timeValue = 0;
        struct tm *p = NULL;
        char *str = NULL;
    
        time(&timeValue);
        p = localtime(&timeValue);
        str = asctime(p);
        printf("现在的时间字符串是 = %s\n",str);
    
        return 0;
    }
    
    


    结果:现在的时间字符串是 = Tue Dec 26 23:04:58 2017


    6.

    mktime(将时间结构数据转换成经过的秒数) 

    #include

    time_t mktime(strcut tm * timeptr);

    函数说明  mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。

    返回值  返回经过的秒数。

    范例  /* 用time()取得时间(秒数),利用localtime()

    转换成struct tm 再利用mktine()将struct tm转换成原来的秒数*/

    例子:

    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
        time_t timeValue = 0;
        struct tm *p = NULL;
    
        time(&timeValue);
        printf("转换之前的时间秒数是 = %ld\n",timeValue);
        p = localtime(&timeValue);
    
        timeValue = 0;
        timeValue = mktime(p);
        printf("转换之后的时间秒数是 = %ld\n",timeValue);
    
        return 0;
    }
    
    


    结果:

    转换之前的时间秒数是 = 1514300922

    转换之后的时间秒数是 = 1514300922





    展开全文
  • 1、将重复的那一个数字剔除,则得到长度为(N-1)、公差为1的等数列; 2、对此数列进行求和操作,得到sum1;对数组进行求和操作,得到sum2. 3、sum2-sum1的结果就是重复的那一个数字。 代码如下: int do_dup(int ...

    题目描述:
    数组a[N]中顺序存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.要求时间复杂度必须为O(N)。
    函数原型:int do_dup(int a[],int N);
    解题思路:
    1、将重复的那一个数字剔除,则得到长度为(N-1)、公差为1的等差数列;
    2、对此数列进行求和操作,得到sum1;对数组进行求和操作,得到sum2.
    3、sum2-sum1的结果就是重复的那一个数字。
    代码如下:

    int do_dup(int a[],int N) //未经调试
    { 
        int sum = 0; 
        int sum2; 
        /*对数组进行求和操作*/
        for(int i=0;i<N;++i) { 
            sum+=a[i]; 
        } 
        /*因为已经将重复的那个数字剔除了,
        所以要求和的数字个数为(N-1)个。
        带入等差数列求和公式(见下图) */
        sum2 = (1+(N-1))*(N-1)/2; 
        return (sum-sum2); 
    } 
    
    int main()
    {
        int arr[SIZE] = {1, 2, 3, 4, 5, 6, 7, 2, 8, 9};
        int ret = do_dup (arr, SIZE);
        printf ("ret=%d\n", ret);
    
        return 0;
    }
    

    结果如下图:
    在这里插入图片描述

    等差数列求和公式
    后续遇到新的解法会回来补充。

    展开全文
  • 判断 翁恺 做判断 计算时间差 输两个时间每个时间分别输时和 分钟的值然后输出两个时间之间的 也以时分表 如果直接分别减会出现分钟借位的情况1点40分和2点10分的 如果 就分别减的案然后判断有没有出现 借位不 ...
  • 在程序运行之前获取一次系统的时间戳,在程序运行结束后再获取一次系统的时间戳,两次时间戳之差即为当前程序运行所花费的时间。 #include <stdio.h> unsigned long getTimeStamp(void); int main(int argc,...

    本程序可以用于评估算法程序在实际运行过程中所消耗的时间。在程序运行之前获取一次系统的时间戳,在程序运行结束后再获取一次系统的时间戳,两次时间戳之差即为当前程序运行所花费的时间。

    #include <stdio.h>
    
    unsigned long getTimeStamp(void);
    
    int main(int argc, char *argv[])
    {
    	unsigned long timeStmp = getTimeStamp();
    
    	printf("timeStmp = %d\r\n", timeStmp);
    	timeStmp = getTimeStamp() - timeStmp;
    	printf("timeStmp = %d\r\n", timeStmp);
    
    	return 0;
    }
    
    // 获取CPU运行时间(ns级)
    unsigned long getTimeStamp(void)
    {
    	__asm _emit 0x0F;
    	__asm _emit 0x31;
    }
    

    运行结果如下:

    timeStmp = -1220653657
    timeStmp = 210279
    
    展开全文
  • 表达式2.1 计算时间差2.2 运算符优先级2.3 赋值运算符2.4 “嵌入式赋值”(不推荐使用)2.5 交换两个变量(a和b)的值(小套路一)2.6 复合赋值2.7 递增递减运算符Third Week 判断1. 判断1..
  • 如:计算两个时间点的时间差 ①会得到什么数据,怎么得到这些数据 ②怎么计算 3.运算符优先级 我要有什么样的变量来保存,我要如何算平均数呢 单目,加减乘除,赋值,优先级从高到低 不要写嵌套的赋值;一般是...
  • 线性表的顺序存储实现 ...链表对应于STL中的list,其特性就是插入和删除比较方便(只需要修改节点指针),但是随机访问性能很,相比于数组的O(1)的时间复杂度,要访问链表中的节点需要O(n)。 code
  • 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,...两次获得的时钟打点数之差 (C2-
  • 关键点:因为要计算两个时间的差值,首先你是得计算年份的天数,有闰年分,判断出来就行了。 其次是两个年份之间的月份的:这个难点在于有闰月,且每个月的天数还不同。但是你还得用个循环加。所以用一个二维...
  • c语言经典案例

    2014-10-30 08:06:57
    实例043 求等数列 55 实例044 亲密数 56 实例045 自守数 57 第5章 运算符与表达式 60 实例046 求二元一次不定方程 61 实例047 可逆素数 63 实例048 判断闰年 64 实例049 黑纸与白纸 65 实例050 阿姆斯特朗数 67 ...
  • 最近心情很,更新的很慢 直接上题目: 编程题#1:分配病房 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...
  • 两个点之间的访问时间=max(两点横坐标之差,两点纵坐标之差) 如果存在多个点,那么累加即可。 第一次提交: int minTimeToVisitAllPoints(int** points, int pointsSize, int* pointsColSize){ int sum = 0,t1,t2; ...
  • 简图记录学习~一、概念: 排序:... 排序算法的性能要素:1、时间复杂度 2、空间复杂读 3、算法复杂性排序名排序类型稳定性时间复杂度空间复杂度选择参考冒泡排序交换排序稳定:O(n^2) 平均:O(n^2) 最优:O(n)O(...
  • `C语言`在设计初有一个理念:作为底层编程语言,要能够用`C语言`表达出`机器语言`的所有指令,就是说,如果机器语言有一种指令而`C语言`没法通过编译之后直接产生,这样是不合格的。 `+=`...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其...
  • C语言实例解析精粹 PDF

    热门讨论 2010-08-17 00:20:25
    实例174 计算标准 实例175 求取符合特定要求的素数 实例176 统计符合特定条件的数 实例177 字符串倒置 实例178 部分排序 实例179 产品销售记录处理 实例180 特定要求的字符编码 实例181 求解三角方程 实例182 新...
  • 小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。 输入格式 输入的第一行包含了一个整数n,表示小明拿到的...
  • C语言:最大值减去最小值

    万次阅读 2019-01-20 20:05:37
    计算三个数中的最大值与最小值之差。 输入 输入包括三个整数。 输出 输出最大值与最小值之差。 样例输入 样例输出 #include&lt;stdio.h&gt; void swap(int *x,int *y) { int t=*x; *x=*y; ...
  • C语言教学效果较,随着扩大招生而日益突出。 为了激发学生的学习兴趣,恢复其“学习一种程序设计语言,掌握基本算法和计算机化思维模式的程序设计语言”教学的本来目的,在多年教学实践的基础上我们重新设计了...
  • 实际上是两个指针值(地址) 相减之差再除以该数组元素的长度(字节数)。例如pf1和pf2 是指向同一浮点数组的两个指针变量,设pf1的值为2010H,pf2的值为2000H,而浮点数组每个元素占4个字节,所以pf1-pf2的结果为(2000H...
  • 简介:在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙2.函数原型:#include&lt;sys/time.h&gt;int gettimeofday(struct timeval*tv,struct timezone *tz )3.说明:...
  • 零基础学C语言(3):判断与循环 根据比较的结果,决定做、还是不做某些动作,就要用到if语句。 if语句简言:如果"( )"内的条件成立True,执行“{}”之间的语句,否则就跳过。 if ( 条件成立 ){ ... } ...
  • 最近,华为手表的太空液晶表盘在抖音爆火,一个旋转的太空人,配上洗脑的音乐,一下吸引了大波用户更换...所以是C语言,是因为大家基础都比较嘛,贸然使用C++或者其他编程语言来写的话,很多小伙伴也是听不懂,源码
  • 公司举行的为期10天的软件...这都是以前留下的坏习惯,坚决要改掉,而且因为时间有点太匆忙,代码也没有优化和重构,函数体都太长了,…不过那个效率啊规范啊类的的就太远了…  这次培训,两天低级案例研讨...
  • 浙江大学C语言上机练习题&答案 第2周(M2) 2 20011求华氏温度100°F对应的摄氏温度。 2 20012 求华氏温度 150°F 对应的摄氏温度。 3 20013求摄氏温度26°C对应的华氏温度。 3 20015当n为152时,分别求出n的个位...
  • 为了更精确,Lele系统里的Rating并不像Topcoder里只采用整数,而是采用了小数,甚至可能存在负数(比得实在太了)。 突然有一天,无聊到发慌的Lele看了一下自己的Rating,竟然很神奇的符合下面这个函数: ...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

c语言时间之差

c语言 订阅