加强版-打鱼晒网(文件操作)

#include<stdio.h>

int main(){

	int day1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年每月的天数集合
	int day2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年每月的天数集合

	int year,month,day,flag=0,year1,flag1=0;
	int sum,sum1,temp;

	int  data;

	//fp   读取文件的指针
	FILE *fp = fopen("in.txt","r");
	//fout 向文件写的指针
	FILE *fout = fopen("out.txt","w");


	if(!fp){
		//如果指针所指的文件 不存在   不创建这个文件
		printf("in.txt文件不存在!");

		return -1;

	}
	//测试这个文件是否有内容


	if(!fout){
		//如果指针所指的文件 不存在  那么就创建一个名字为 out.txt的文件
		printf("out.txt文件不存在!");
		return -1;

	}
	//指针没有指到文件的末尾
		while(!feof(fp)){
			
			
			//循环一次是一个20100101  意思是data = 20100101 这是个数字
		 	fscanf(fp,"%d",&data);
			
			printf("%d\n",data);


			 year = data/10000;

				printf("year:%d",year);
			
			 month = data/100%100;

			printf("mouth:%d",month);

			 day = data%10;

			printf("day:%d\n",day);


if(year<2010)//判断年份输入
{
    printf("年份输入错误\n");
	return 0;
}

for(year1=2010;year1<=year;year1++)
{
if((year%4==0)&&(year%100==0) ||(0 == year %400))//判断是否为闰年
flag+=1;
else
flag1+=1;
}
sum=366*flag+365*flag1;//年的总天数
sum1=0;
if(month>=12)
printf("月份输入错误\n");
for(int a=12;a>=month;a--)
{
switch(a)//判断月的天数
{
case 1: 
case 3: 
case 5: 
case 7: 
case 8: 
case 10: 
case 12 : 
	temp=31;
	break;
case 4: 
case 6: 
case 9: 
case 11: 
	temp=30;
	break;
case 2:
{
	if((year%4==0)&&(year%100==0) ||(0 == year %400))
	{
		temp=29;
		
	}
	else 
	{

		temp=28;
	}
}
	break;
default: temp=0;
}
sum1+=temp;
}
	if((year%4==0)&&(year%100==0) ||(0 == year %400))
	{
		if(day<=0||day>day2[month-1])//判断日子输入
		{
			printf("天份输入错误\n");
			return 0;
		}
	}
	else 
	{
		if(day<=0||day>day2[month-1])
		{
			printf("天份输入错误\n");
			return 0;
		}
	}
sum=sum-sum1+day;//总天数
if(sum%5==0||sum%5==4)
{
printf("晒网\n");
//这个地方是输出到out.txt

fprintf(fout,"%s\n","he is basking!");
}
else{

printf("打鱼\n");
fprintf(fout,"%s\n","he is fishing!");
}
}

		printf("\n");
		
		fclose(fp);

		fclose(fout);

		return 0;

}

in.txt  out.txt 与.cpp文件位置一样!如果不一样请使用绝对路径!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值