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;
}