两个小测试题

1.以1980年1月6日世界协调时0点为开始,计算北京时间2020年6月20日15:53:38是第几周的多少秒。

方法1,利用c的time.h中的标准库函数mktime()
首先计算除每周(7天)一共是多少秒:3600247,作为一个单位常量 nTick_week;
step1:获取基准时间的tick数(1970年1月1日开始);
step2:获取所给北京时间的tick数;
step3:计算北京时间相对基准时间的tick差值,
step4:用nTick_diff/nTick_week,并向下取整,这是所需计算时间相对于开始时间的周数nWeek;然后用差值取余nTick_diff%nTick_week,所得余数即为秒数nSec.

方法二,不用任何库函数
首先计算除每周(7天)一共是多少秒:3600247,作为一个单位常量 nTick_week;
step1.用一个for循环确认1980年1月6日到2020年1月6日,40年间的平年和润年,平年数计为i,润年数计为j;
step2.算出tick这20年的tick数,计为nTick_1;
step3,算出2020年1月6日至2020年6月20日15:53:38的tick数nTick_2;
step4. nTick_diff = nTick_1 +nTick_2;
step5:用(nTick_diff/nTick_week),并向下取整,这是所需计算时间相对于开始时间的周数nWeek;然后用差值取余(nTick_diff%nTick_week),所得余数即为秒数nSec.

相对于1980年1月6日0点,周数为2110周, 秒数为575618秒

2.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,编程计算这个序列前20项的和。
#include <stdio.h>

double nGetValue(int n)
{
double nNumer = 2;
double nDeno = 1;
double nTemp = 0;
double nSum = 0;

	if(n < 0)
	{
			printf("Invalid parameter\n");
			return -1;
	}
	if(n = 0)
	{
			return 0;
	}
    for(int i = 0; i < n; i++)
    {
    	sum += nNumer/nDeno;
    	nTemp = nNumer;
    	nNumer += nDeno;
    	nDeno = nTemp;
    }
    return nSum

}

int main(void)
{
double nResult = -1;
int n ;
scanf("%d", &n)

nResult = nGetValue(n);
if(nResult < 0)
{
     printf("get the value failed\n");
}
else{
	  printf("the value = %lf", nResult);	
}   

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值