实验三 天数统计

实验目的:

1.熟悉C程序设计中的选择和循环等语句。

2.熟悉C程序设计中的switch语句来实现多分支选择结构

3.熟悉C程序设计中的自定义函数

实验原理:

1. 需先自定义一个函数来判断是否是闰年,并根据年份输出对应每个月的天数。

2. 通过起始日期与截止日期的年月情况,用年差dy,月差dm,天差dd来方面计算。
 

实验内容:

天数统计

1)键盘输入起始日期和结束日期,统计从起始日期至结束日期,经历的天数;

2)注意大小月、闰年等问题。

 

实验结果:

#include <stdio.h>

int year(int year) {

​if ((year % 4==0) && (year % 100!=0)|| year % 400 ==0)

​   return 1;

​else

​return 0;

}

int month(int month,int year1) {

​int day = 0;

​if ((year(year1))==1) 

​{  

​​switch (month) 

​​{

​​case(1):day = 31; break;

​​case(2):day = 29; break;

​​case(3):day = 31; break;

​​case(5):day = 31; break;

​​case(7):day = 31; break;

​​case(8):day = 31; break;

​​case(10):day = 31; break;

​​case(12):day = 31; break;

​​default: day = 30;

​​}

​}

​else

​​switch (month)

​​{

​​case(1):day = 31; break;

​​case(2):day = 28; break;

​​case(3):day = 31; break;

​​case(5):day = 31; break;

​​case(7):day = 31; break;

​​case(8):day = 31; break;

​​case(10):day = 31; break;

​​case(12):day = 31; break;

​​default: day = 30;

​​}

​return day;

}

int yearday(int j) {

​int dd = 0;

​int year = j;

​for (int i = 1; i <= 12; i++)

​​dd += month(i,year);

​return dd;

}

int main() {

​int year1, month1, day1;

​int year2, month2, day2;

​int dy = 0, dm = 0, dd = 0;

​printf("起始日期:");

​scanf("%d/%d/%d", &year1, &month1, &day1);

​printf("截至日期:");

​scanf("%d/%d/%d", &year2, &month2, &day2);

​if (year1 == year2) 

​{

​​if (month1 == month2) 

​​{

​​​dd = day2 - day1;

​​}

​​else

​​{   

​​​int year = year1;

​​​dm = month2 - month1;

​​​for (dm = dm - 1; dm > 0; dm--)

​​​{

​​​​dd += month(month1 + dm,year);

​​​}

​​​dd += ((month(month1,year) - day1));​​​

​​​dd += day2;

​​}

​}

​else

​{

​​dy = year2 - year1;

​​for (dy = dy - 1; dy > 0; dy--)

​​{   

​​​int year = year1 + dy;

​​​for(int i=1;i<=12;i++)

​​​dd += month(i,year);

​​}

​​int year = year2;

​​for (int i = 1; i < month2; i++)

​​{

​​​dd += month(i,year);

​​}

​​dd += day2;

​​year = year1;

​​int dd1 = 0;

​​for (int i = 1; i < month1; i++)

​​{

​​​dd1 += month(i,year);

​​}

​​dd1 += day1;

​​dd += (yearday(year1) - dd1);

​}

​printf("间距%d天", dd);

}

 

 

总结与思考

  统计天数与打印日历在计算天数时有着相同的方法,但统计天数有着起始日期和结束日期,不需要自己人为设定一个初始年份,在计算过程中只要依次累加每个月的天数和起始、截止月的天数就行,思路条理比较清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值