用c语言编写一个计算两个日期之间相差天数的小程序。语法尽量简单,...

用c语言编写一个计算两个日期之间相差天数的小程序。语法尽量简单,初学者懂得不多。... 用c语言编写一个计算两个日期之间相差天数的小程序。语法尽量简单,初学者懂得不多。 展开
 我来答
暮影1994
推荐于2017-09-30 · TA获得超过2338个赞
知道大有可为答主
回答量:1215
采纳率:60%
帮助的人:377万
展开全部
//May 05 2015 By 12052010 测试通过,望采纳 
#include<stdio.h>
 
//判断闰年,如果是闰年返回1,否则返回0 
int isYear(int year){

return (year%4==0)&&( year %400==0 || year %100!= 0) ? 1:0;
}

//返回该年 year 该月 month 的最大天数 
int getDayOfMonth(int year , int month) {

int dayArr[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

return (month == 2 && isYear(year)==1) ? dayArr[month]+1 : dayArr[month] ;
}

//获取两个日期之间的天数,第一个日期必须比第二个日期小  :) 
int getTotalDay(int year1,int month1,int day1,int year2,int month2,int day2){

long total = 0;

for(int year = year1; year < year2 ;  year ++ ){
total = total + 365;
if(isYear(year)==1)
total ++;
}

for(int month =1; month < month2; month ++ ){
total = total + getDayOfMonth(year2,month);
}

total = total + day2;

for(int month=1 ; month < month1; month ++ ){
 total = total - getDayOfMonth(year1,month);
}

return total - day1;

}

int main(){

int year1 ,month1,day1;
int year2, month2,day2;

do{//控制日期输进合法,同时year1应该小于year2 
printf("\nInput year1-month1-day1\n(such as 2012-12-12) : ");
scanf("%d-%d-%d", &year1,&month1,&day1);
} while( year1 <0 || month1<1 || month1>12 || day1<1|| day1> getDayOfMonth(year1,month1));


do{//控制日期输进合法 
printf("\n\n\nInput year2-month2-day2\n(such as 2014-12-12) : ");
scanf("%d-%d-%d", &year2,&month2,&day2);
} while( year2 <0 || year2 <year1|| month2<1 || month2>12 || day2<1|| day2> getDayOfMonth(year2,month2));



printf("\nBetween two date have: %ld  days \n\n\n", getTotalDay(year1,month1,day1,year2,month2,day2));
return 0;
}
更多追问追答
追问
我用vc6.0怎么报错呢?
追答
我用的是devc
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式