c语言三天打鱼两天晒网
三天打鱼两天晒网c语言编程用结构体变量解题思路如下:
1、计算从 1990年1月1日开纯喊始至指定日期共有多少天;
2、由于“打鱼斗裤樱”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3、根据余数判断是在“打鱼”还是在“晒网”;若余数为 1,2,3,则他是在“打鱼”否则是在“空丛晒网”。
接下来的代码就可以根据自己所学的知识进行解决了。
⑵ c语言 三天打鱼两天晒网 在线等 急急急!
#include<stdio.h>
intmain(){
intN,i;
scanf("%d",&N);
for(i=0;i<N;i+=5);
if(i-N>1)
printf("这个人第%d天在“打鱼乎喊伍” ",N)。else。
printf("岁或这个人第%d天在“晒网” ",N);
(2)c语言三天打鱼两天晒网扩展阅读:
C语言的注释符一般分为两种,一种是以“/*”开头,在中间加上注释内容,并以“*/”结尾的段落注释符。在“/*”和“*/”之间的即为注释。
另一种是以“//”开头,后面加注释内容的单行注释符。在“//”之后的即为注释。
C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。
注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起渗物来,使翻译跳过不做处理,待调试结束后再去掉注释符。
⑶ c语言编程之三天打鱼两天晒网
#include <stdio.h>
#define MAX 100
#define leap(y) (y%4==0 && y%100!=0 || y%400==0)
struct d{int y,m,d;};
long days(struct d d1,struct d d2)
{
int mon[2][13]= {{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int i; long td=0;
for(i=d1.y;i<d2.y;i++)
td+=leap(i)?366:365;
for(i=1;i<d1.m;i++)
td-=mon[leap(d1.y)][i];
td-=d1.d-1;
for(i=1;i<d2.m;i++)
td+=mon[leap(d2.y)][i];
td+=d2.d-1;
return td;
}
int main()
{
struct d now[MAX],start={1990,1,1};
int n,i,day;
scanf("%d",&n);
for(i=0;i<n;++i)
{
scanf("%d%d%d",&now[i].y,&now[i].m,&now[i].d);
}
for(i=0;i<n;++i)
{
day=days(start,now[i]);
if(day%5<3)
printf("He was fishing on %d %d %d\n",now[i].y,now[i].m,now[i].d);
else
printf("He was basking on %d %d %d\n",now[i].y,now[i].m,now[i].d);
}
return 0;
}
⑷ C语言“三天打鱼两天晒网”问题
根据题意可以将解题过程分为三步:
1、计算从1990年1月1日开始至指定日期共有多少天;
2、由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3、根据余数判断他是在“打鱼”还是在“晒网”;若余数为1,2,3,则他是在“打鱼”;否则是在“晒网”。
#include<stdio.h>
/*定义日期结构体*/
typedefstructdate{
intyear;
intmonth;
intday;
}DATE;
/*判断是否为闰年,是返回1,否返回0*/
intisLeap(intyear){
return((year%4==0&&year%100!=0)||(year%400==0));
}
/*计算指定日期距离1990年1月1日的天数*/
intcountDay(DATEcurrentDay){
intperMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};/*每月天数数组*/
inttotalDay=0,year,i;
/*求出指定日期之前的每一年的天数累加和*/
for(year=1990;year<currentDay.year;year++){
if(isLeap(year))/*判断是否为闰年*/
totalDay=totalDay+366;
else
大轮totalDay=totalDay+365;
}
/*如果为闰年,则二月份为29天*/
if(isLeap(currentDay.year))
perMonth[2]+=1;
/*将本年内的天数累加到袜仿埋totalDay中*/
for(i=0;i<currentDay.month;i++)
totalDay+=perMonth[i];
/*将本月内的天数累加到totalDay中*/
totalDay+=currentDay.day;
/*返回totalDay*/
returntotalDay;
}
intmain(void){
DATEtoday;/*指定日期*/
inttotalDay;/*指定日期距离1990年1月1日的天数*/
intresult;/*totalDay对5取余的结果*/
interror;
do{/*输入指定日期*/
printf("Pleaseinputtheyear/month/day: ");
scanf("%d/%d/%d",&today.year,&today.month,&today.day);
printf(" ");
error=0;
if(today.year<1990)/*判断日期格式是否正确*/
{printf("Theyearshouldbelargerthan1990! ");error=1;}
if(today.month<1||today.month>12)
{printf("Themonthinputiserror! ");error=1;}
if(today.day<0||today.day>31)
{printf("Thedayinputiserror! ");error=1;}
printf("====================================================== ");
}while(error);
totalDay=countDay(today);/*求出指定日期距离1990年1月1日的天数*/
/*天数%5,判断输出打鱼还是晒网*/
result=totalDay%5;
if(result>0&&result<4)
告蚂printf("fishing! ");
else
printf("sleeping! ");
printf(" ");
return0;
}
运行结果
1991/10/25,打渔
⑸ c语言 某人从1990年1月1日起开始“三天打鱼两天嗮网”,问某一年某一天,该人是在打鱼还是在嗮网。
楼上的太复杂了,如下即可(C语言):
#include<time.h>
#include<stdio.h>
intmain(intargc,char*段漏argv[])
{
//t1为1990年1月1日
structtmt1={0,0,0,1,0,90,0,0,0},t2=握升烂{0};
printf("Pleaseinputyearmonthday:");
scanf("%d%d%d",&t2.tm_year,&t2.tm_mon,&笑碧t2.tm_mday);
//生成tm结构数据
t2.tm_year-=1900;
t2.tm_mon-=1;
//相差秒数
longseconds=(long)(difftime(mktime(&t2),mktime(&t1)));
//相差天数
longdays=(seconds+86399)/86400;
if(days%5<=2)
printf("打鱼 ");
else
printf("晒网 ");
return0;
}
⑹ 关于C语言经典程序“打渔晒网”
楼主你好!!!俺仔细的看了一下程序代码,代码没有错误!!!!
俺解释一下(就针对与楼主的问题);
1.for(i=1;i<day.month;i++)这个for()语句没有错误,这句确实只算了11个月的,但前面的term.day=31;给了补上!!!原因是无论那一年,1月和12月都是31天,所以楼主先把1月和12月的算在一起啦!!!这也正是楼主第二个疑问的所在!!!
如果楼主不信的话!!!可以把每棚拿一年的打印出啦,看看是不是365/366
要是少算一个月的话,那一定不是365/365;
修改如下:
#include<stdio.h>
#include<iostream.h>
structdate
{
intyear;
intmonth;
intday;
};
intdays(structdateday)
{
staticintday_tab[2][13]=
{
{0,31,28,31,30,31,30,31,31,30,31,30,31,},/*平均每月的天数*/
{0,31,29,31,30,31,30,31,31,30,31,30,31,},
};
inti,lp;
lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
for(i=1;i<day.month;i++)/*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp][i];
cout<<day.day<<endl;
returnday.day;
}
voidmain()
{
structdatetoday,term;
intyearday,year,day;
printf("Enteryear/month/day:");
scanf("%d%d%d",&today.year,&today.month,&today.day);/*输入日期*/
term.month=12;/*设置变量的初始值:月*/
term.day=31;/*设置变量的初始值:日*/
//注意这里哈
for(yearday=0,year=1990;year<today.year;year++)
{
term.year=year;
链孙搭yearday+=days(term);/*计算从1990年至指定年的前一年共有多少天*/
}
yearday+=days(today);/*加上指定年中到指定日期的天数*/
day=yearday%5;凯或/*求余数*/
if(day>0&&day<4)
printf("hewasfishingatthatday. ");/*打印结果*/
else
printf("Hewassleepingatthatday. ");
}