加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言写的小程序:计算任意两个日期之间的天数、计算已经活的天数~

(2013-07-27 00:57:44)
标签:

c语言

编程

计算天数

活过的天数

分类: Linux丨C丨Cpp丨编程
这次主要学习了调用函数,代码中有N多个函数。
这断代码的作用是计算任意两个日期之间的天数,要求输入两个日期,且两个日期有先后,也就是在前面的日期要先输入。这里是可以改进的,只要将两个日期比较一下,需要就将它们交换。
先看看代码:
01 #include <stdio.h>
02 //计算任意两个日期之间的天数
03 
04 //判断输入有效
05 int valiDate(int y,int m,int d){
06    if(y>3000||y<1900){
07        printf("error year!\n");
08    return 1;
09    }
10    if(m>12||m<1){
11        printf("error month!\n");
12    return 1;
13    }
14    if(d>daysOfMonth(y,m)||d<1){
15        printf("error day!\n");
16    return 1;
17    }
18    return 0;
19 }
20 
21 //一个整月的天数
22 int daysOfMonth(int y,int m){
23    if(m==2){
24        if(y%4==0&&y%100!=0||y%400==0){
25        return 29;
26    }else{
27        return 28;
28    }
29    }else if(m==4||m==6||m==9||m==11){
30            return 30;
31    }else{
32            return 31;
33    }
34 }
35 
36 //输入年份已经过的天数
37 int daysBefore(int y,int m,int d){
38    int i,result=0;
39    for(i=1;i<=12;i++){
40        if(i==m){
41        result += d;
42        return result;
43    }else{
44        result += daysOfMonth(y,i);
45    }
46    }
47 }
48 
49 //计算每年天数
50 int daysOfYear(int y){
51    if(y%4==0&&y%400!=0||y%400==0){
52        return 366;
53    }else return 365;
54 }
55 //主函数
56 int main(){
57    int y1,m1,d1,y2,m2,d2;
58    printf("please input first date:yyyy-mm-dd\n");
59    scanf("%d-%d-%d",&y1,&m1,&d1);
60    while(valiDate(y1,m1,d1)){
61        printf("please input first date:yyyy-mm-dd\n");
62        scanf("%d-%d-%d",&y1,&m1,&d1);
63    }
64    printf("please input secend date:yyyy-mm-dd\n");
65    scanf("%d-%d-%d",&y2,&m2,&d2);
66    while(valiDate(y2,m2,d2)){
67        printf("please input secend date:yyyy-mm-dd\n");
68        scanf("%d-%d-%d",&y2,&m2,&d2);

 69    }
70    int i,result=0;
71    for(i=y1;i<y2;i++){
72        result += daysOfYear(i);
73    }
74    result = result - daysBefore(y1,m1,d1+ daysBefore(y2,m2,d2);
75    printf("there are %d days\n",result);
76    return 0;
77 }
 运行如果如下:

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有