我是靠谱客的博主 着急奇迹,最近开发中收集的这篇文章主要介绍C语言题目_1:三天打鱼两天晒网,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题 目:某人从1990年1月1号开始三天打鱼,两天晒网,问今天他在打鱼还是晒网?
提示:闰年:能被4整除且不能被100整除 或者 能被400整除的年份

all_days = from_1990_to_year_days + sum_month + date - 31;	//得到总天数。31是1900.0.0-1990.1.1的起始。

上面这个计算不合理,属于投机取巧了:因为如果不是从1.1号开始计算,而是从1.11这种时间开始计算,这个计算方式就不对了。先暂时记录着,以后看再回来修改。

int year, month, date, all_days;
int is_leap_year_or_not(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
return 0;
}
}
void get_year_month_date(void)
{
flag_year:
printf("请输入现在年份:");
scanf("%d", &year);
if (year < 1990)
{
printf("输入有误,请输入大于1990的年份rn");
goto flag_year;
}
flag_month:
printf("请输入现在月份:");
scanf("%d", &month);
if (month > 12 || month < 1)
{
printf("输入有误,月份范围在1~12rn");
goto flag_month;
}
flag_date:
printf("请输入现在日期:");
scanf("%d", &date);
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (date > 31 || date < 1)
{
printf("输入有误,请重新输入,范围在1~31rn");
goto flag_date;
}
}
else if (month == 2)
{
if (!is_leap_year_or_not(year))	//如果是闰年	
{
if (date > 30 || date < 1)
{
printf("输入有误,请重新输入,范围在1~29rn");
goto flag_date;
}
}
else	//如果不是闰年
{
if (date > 29 || date < 1)
{
printf("输入有误,请重新输入,范围在1~28rn");
goto flag_date;
}
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (date > 30 || date < 1)
{
printf("输入有误,请重新输入,范围在1~30rn");
goto flag_date;
}
}
}
void count_days_form_1990_to_today(void)
{
int i, cnt = 0, sum_month = 0, from_1990_to_year_days;
for (i=1990; i<=year; i++)	//遍历这些年份之间所有闰年出现的次数
{
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
{
cnt++;
}
}
from_1990_to_year_days = (year - 1990) * 365 + cnt;	//计算出从1990到现在的所有年份的天数
switch (month)
//计算出从1.1号到现在月份的天数
{
case 12: sum_month = sum_month + 31;
case 11: sum_month = sum_month + 30;
case 10: sum_month = sum_month + 31;
case 9 : sum_month = sum_month + 30;
case 8 : sum_month = sum_month + 31;
case 7 : sum_month = sum_month + 31;
case 6 : sum_month = sum_month + 30;
case 5 : sum_month = sum_month + 31;
case 4 : sum_month = sum_month + 30;
case 3 : sum_month = sum_month + 31;
case 2 : if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)	//判断今年是否是闰年
{
sum_month = sum_month + 29;
}
else
{
sum_month = sum_month + 28;
}
case 1 : sum_month = sum_month + 31;
}
all_days = from_1990_to_year_days + sum_month + date - 31;	//得到总天数。31是1900.0.0-1990.1.1的起始。
//	printf("all_days=%drn", all_days);
//	printf("from_1990_to_year_days= %drn", from_1990_to_year_days);
//	printf("sum_month = %drn", sum_month);	
}
void judge_fishing_or_not(void)
{
if (all_days % 5 == 0 || all_days % 5 == 4)
{
printf("他今天在晒网rn");
}
else
{
printf("他今天在打鱼rn");
}
}
int main(void)
{
get_year_month_date();
count_days_form_1990_to_today();
judge_fishing_or_not();
}

最后

以上就是着急奇迹为你收集整理的C语言题目_1:三天打鱼两天晒网的全部内容,希望文章能够帮你解决C语言题目_1:三天打鱼两天晒网所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部