中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”

#include<stdio.h>
#include<stdlib.h>
int year,month,day,temp,x,jieguo,time;
long shuju;
void fun(int year2,int month2,int day2)
{
	int chushiyear=2010;
	int chushimonth=1;
	int chushiday=1;
	time=0;
	while(chushiyear<year2)//利用while循环计算2010年1月1日到形参year2之间的整年的天数
	{
		if((chushiyear%4==0&&chushiyear%100!=0)||(chushiyear%400==0))//对年份进行计算,判断是闰年还是平年
			time+=366;//闰年加366天
		else
			time+=365;//平年加355天
		chushiyear++;
	}
	while(chushimonth<month2)//计算剩余的整月的天数
	{
		switch(chushimonth)//根据不同的月份选择不同的天数
		{
		case 12:
		case 10:
		case 8:
		case 7:
		case 5:
		case 3:
		case 1:time+=31;
		       break;
		case 2:
			{
				if((year2%4==0&&year2%100!=0)||(year2%400==0))//根据年份判断2月份的天数
				{
					time+=29;
					break;
				}
				else
				{
					time+=28;
					break;
				}
			}
		case 4:
		case 6:
		case 9:
		case 11:time+=30;
			    break;
		}
		chushimonth++;
	}
	time+=day2;
	printf("从2010年1月1日到您所输入的日期一共有%d天\n",time);
	jieguo=time%5;//计算总天数%5的值,判断指定日期进行的工作
	if(jieguo==0||jieguo==4)
		printf("今天是晒网\n");
	else
		printf("今天是打鱼\n");
}
void main()
{	
	x=1;
	while(x==1)//使用while循环用于操作的连续执行
	{
		printf("请选择所要执行的操作:\n");//主界面提示用户进行选择操作
		printf("1------使用文件输入进行测试\n");
		printf("2------使用键盘输入执行程序\n");
		printf("0------结束程序\n");
		printf("请输入数字(0-2)指令进行操作:\n");
		scanf("%d",&temp);
		while(temp!=0&&temp!=1&&temp!=2)//判断用户输入是否正确,只能选择0/1/2三个数字
		{
			printf("您所输入的指令有误,请您重新输入:\n");
			scanf("%d",&temp);//对变量temp进行赋值
		}
		switch(temp)//根据用户的输入执行相应的操作
		{
		case 1:
			{
			printf("成功打开位于该源文件目录中的“in.txt”文件\n");
			FILE * fp1;
			FILE * fp2;
			if((fp1=fopen("in.txt","r"))==NULL)//判断文件是否正常打开
			{
				printf("无法打开此文件");
				exit(0);
			}
			if((fp2=fopen("out.txt","w"))==NULL)//判断文件是否正常打开
			{
				printf("无法打开此文件");
				exit(0);
			}
			fscanf(fp1,"%ld",&shuju);//利用文件“in.txt”中的数据对变量shujui进行赋值
			if(shuju==0)//对文件是否有数据进行判断
			{
				printf("此文件中没有数据,请在文件中输入正确的数据后执行程序\n");
				break;
			}
			year=shuju/10000;//利用算法将文件中提取的数据进行相应,转化为所需要的year/month/day
			month=((shuju/100)%100);
			day=(shuju%100);
			fun(year,month,day);//执行fun函数根据日期计算结果
			fprintf(fp2,"从2010年1月1日到文件中读取的日期一共有%d天",time);//在文件“out.txt”输出测试的结果
			if(jieguo==0||jieguo==4)//根据计算结果,判断是打鱼还是晒网
			
				fprintf(fp2,"今天是晒网\n");
			else
				fprintf(fp2,"今天是打鱼\n");
			fclose(fp1);//关闭文件
			fclose(fp2);//关闭文件
			printf("文件测试结束,请选择您的操作(请在数字1和2之间进行选择):\n");
			printf("1---------返回菜单\n");//提示用户进行操作选择
			printf("2---------结束程序\n");
			scanf("%d",&x);//对变量x进行赋值
			while(x!=1&&x!=2)//判断用户输入是否正确
			{
				printf("您的输入有误,请重新输入:");
				scanf("%d",&x);//重新对变量进行赋值
			}
			break;
			}
		case 2:printf("请按照顺序输入年月日(请输入20100101及之后的日期):");
			scanf("%d%d%d",&year,&month,&day);//使用键盘输入对变量year/month/day进行赋值
			while(year<2010||month>12||month<1||day>31||day<1)//判断输入的日期是否符合题意
			{
				printf("输入有误,请重新输入:");
				scanf("%d%d%d",&year,&month,&day);
			}
			fun(year,month,day);//执行fun函数根据日期计算结果
			printf("本次操作结束,请选择您的操作(请在数字1和2之间进行选择):\n");
			printf("1---------返回菜单\n");
			printf("2---------结束程序\n");
			scanf("%d",&x);//对变量x进行赋值
			while(x!=1&&x!=2)
			{
				printf("您的输入有误,请重新输入:");
				scanf("%d",&x);
			}
			break;
		case 0:break;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值