编写一个程序,计算用户输入的起始时间到终止时间之间相隔的天数。
编写一个程序,计算用户输入的起始时间到终止时间之间相隔的天数。
程序的输入和输出格式为:
输入起始时间(年,月,日):1964.2.19
输入终止时间(年,月,日):2001.10.20
在1964.2.19-2001.10.20之间有13758天
请使用c语言
[最优解释]
這個比較簡單點,
#include<time.h>
#include<stdio.h>
int daytab[][14] = {
{ 0, -1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364 },
{ 0, -1, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
};
int isleap(int year)
{
return (year%4 == 0) && ((year%400 == 0)
[其他解释]
用mktime
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct tm *str2tm(const char *str, struct tm *ptm)
{
char *ptr;
char *tok;
memset(ptm, 0, sizeof(struct tm));
ptr = strcpy(malloc(strlen(str) + 1), str);
tok = strtok(ptr, ".");
ptm->tm_year = atoi(tok) - 1900;
tok = strtok(NULL, ".");
ptm->tm_mon = atoi(tok) - 1;
tok = strtok(NULL, ".");
ptm->tm_mday = atoi(tok);
free(ptr);
return ptm;
}
int main(int argc, char *argv[])
{
char d1[] = "1964.2.19";
char d2[] = "2001.10.20";
time_t t1, t2;
struct tm tm1, tm2;
t1 = mktime(str2tm(d1, &tm1));
t2 = mktime(str2tm(d2, &tm2));
printf("%d\n", (int)((t2 - t1) / (3600 * 24)));
return 0;
}
[其他解释]
我写过一个类似的,楼主可以看看,提出改进意见。
[其他解释]