#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; 
		} 
	} 
} 

发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

如何在SAP系统中发布用户通知-SM02讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。