概述
**
问题描述:
**
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214
等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
**
分析:
**
1.判断输入的数据是否合法;
2.计算2010年1月1日到输入日期一共有多少天,并根据闰年的定义判断其中闰年的存在,利用for语句与switch语句实现计算总天数;
3.“打鱼”和“晒网”的周期为五天,所以将总天数除以五求得余数以判断该天是在打鱼还是在晒网,利用switch语句输出结果。
**
实现代码:
**
#include<stdio.h>
#include<string.h>
void main(){
int year,month,day,day2,allday=0;
int day1=31,day3=31,day5=31,day7=31,day8=31,day10=31,day12=31;
int day4=30,day6=30,day9=30,day11=30;
//freopen("debug\in.txt","r",stdin);//读取in.txt中的数据
printf("请输入年月日(用空格隔开):n");
scanf("%d%d%d",&year,&month,&day);//输入年月日
printf("输入的年月日为%d年%d月%d日n",year,month,day);
if(year%400==0||(year%4==0&&year%100!=0))
day2=29;
else
day2=28;//判断是否为闰年
if(year<2010){
printf("输入年份错误,请重新输入:n");
scanf("%d%d%d,&year,&month,&day");
}//判断是否为合法的年份
if(month>12){
printf("输入月份错误,请重新输入:n");
scanf("%d%d%d,&year,&month,&day");
}//判断是否为合法的月份
if(day>31||month==4&&day>30||month==6&&day>30||month==9&&day>30||month==11&&day>30){
printf("输入日期有误,请重新输入:n");
scanf("%d%d%d,&year,&month,&day");
}//判断是否为合法的日期
if(day2==29&&day>29||day2==28&&day>28)
printf("输入日期有误,请重新输入:n");
scanf("%d%d%d,&year,&month,&day");//判断2月日期是否合法
int i,x=0,y=0;
for(i=2010;i<year;i++){
if(year%400==0||(year%4==0&&year%100!=0))
y+=366;
else
y+=365;
}
switch(month){
case 1:x=0;break;
case 2:x=day1;break;
case 3:x=day1+day2;break;
case 4:x=day1+day2+day3;break;
case 5:x=day1+day2+day3+day4;break;
case 6:x=day1+day2+day3+day4+day5;break;
case 7:x=day1+day2+day3+day4+day5+day6;break;
case 8:x=day1+day2+day3+day4+day5+day6+day7;break;
case 9:x=day1+day2+day3+day4+day5+day6+day7+day8;break;
case 10:x=day1+day2+day3+day4+day5+day6+day7+day8+day9;break;
case 11:x=day1+day2+day3+day4+day5+day6+day7+day8+day9+day10;break;
case 12:x=day1+day2+day3+day4+day5+day6+day7+day8+day9+day10+day11;break;
}
allday=allday+x+y+day;//计算经历了多少天
int z;
z=allday%5;
switch(z){
case 0:printf("在晒网n");break;
case 4:printf("在晒网n");break;
case 1:printf("在打鱼n");break;
case 2:printf("在打鱼n");break;
case 3:printf("在打鱼n");break;}//输出结果
freopen("debug\out.txt","w",stdout);
switch(z){
case 0:printf("在晒网n");break;
case 4:printf("在晒网n");break;
case 1:printf("在打鱼n");break;
case 2:printf("在打鱼n");break;
case 3:printf("在打鱼n");break;//在out.txt中输出结果
}
fclose(stdin);
fclose(stdout);
}
最后
以上就是现代天空为你收集整理的“三天打鱼两天晒网”程序的c语言实现的全部内容,希望文章能够帮你解决“三天打鱼两天晒网”程序的c语言实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复