概述
1.采用C语言实现程序解决问题。
2.算法设计思路如图2-1所示
图2-1 系统流程图
3.调试过程
(1)首先判断输入的指定日期是否合理
图3-1判断指定日期是否合理代码
经测试,这部分代码可以正确判断指定日期是否合理。
图3-2运行结果截图
(2)计算由20100101至指定日期的总天数
图3-3计算总天数代码截图
通过三部分计算出总天数,经测试可以正确计算总天数。
(3)判断指定天数当天是打鱼还是晒网
图3-4判断打鱼还是晒网代码截图
将总天数除以五,若余数为1,2,3,则为打鱼,其余为晒网。
(4)调试文件测试
图3-5文件输入输出测试代码截图
图3-6文件输出结果截图
出现错误:每次只能读取一个日期
改正错误:添加while判断文件是否读完
图3-7改正后代码截图
4.代码
/*************************
Author:罗佳琪
Date:2018-08-29
Description:C语言撒天打鱼两天晒网问题
*************************/
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*in=fopen("in.txt","r");
FILE*out=fopen("out.txt","w");
int a;
while(fscanf(in,"%d",&a)!=EOF)
{
int sum,sum1,sum2=0,sum3;
//sum为由20100101至指定日期的总天数
int date;
int year;
int month;
int day;
int leap;
int n=0;
//由20100101至指定日期共经过多少个闰年
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//每月的天数
printf("请输入指定日期n");
fscanf(in,"%d",&date);
year=date/10000;
//将输入日期年,月,日分开
month=date/100-year*100;
day=date%100;
if(year<2010||month<1||month>12)
//判断输入的年份和月份是否合理
{
fprintf(out,"输入的日期不合理");
return 0;
}
leap=( year % 4 == 0 && year % 100 != 0 )|| year % 400 ;
//判断输入年份是否为闰年
if((day<1||day>mon[month])&&((month!=2)||((month==2)&&(day>mon[month]+leap))))
//判断输入日期是否符合当月天数
{
fprintf(out,"输入的日期不合理");
return 0;
}
for(int i = 2011 ;i<=year;i++)
{
if(( i % 4 == 0 && i % 100 != 0 )|| i % 400 ==0)
//计算由2010年至指定日期经过多少个如年
n++;
}
sum1=(year-2010-n)*365+n*366;
if(leap==1)
{
for(int j=0;j<month;j++)
sum2+=mon[j];
if(month>2)
//若输入年份为闰年且输入月份大于二计算天数加一
sum2+=1;
}
else
{
for(int k=0;k<month;k++)
sum2+=mon[k];
}
sum3=day;
sum =sum1+sum2+sum3;
switch(sum%5)
//总天数除以5,若余数为1,2,3则为打鱼,其余为晒网
{
case 0:fprintf(out,"晒网 "); break;
case 1:fprintf(out,"打鱼 "); break;
case 2:fprintf(out,"打鱼 "); break;
case 3:fprintf(out,"打鱼 "); break;
case 4:fprintf(out,"晒网 "); break;
}
}
fclose(in);
fclose(out);
}
最后
以上就是超级花生为你收集整理的C语言 三天打鱼两天晒网问题的全部内容,希望文章能够帮你解决C语言 三天打鱼两天晒网问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复