#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;
}
}
}
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”
最新推荐文章于 2024-05-25 14:39:02 发布