三天打鱼两天晒网c语言编程(c语言 三天打鱼,两天晒网 中国有一句话:三天打鱼,两天晒网 某人从1992-2-1开始三天打鱼,两天晒网 问:输入)
本文目录
- c语言 三天打鱼,两天晒网 中国有一句话:三天打鱼,两天晒网 某人从1992-2-1开始三天打鱼,两天晒网 问:输入
- c语言 三天打鱼两天晒网 在线等 急急急!
- 关于C语言经典程序“打渔晒网”
- C语言三天打鱼两天晒网问题,帮我看一下哪里有错,运行结果不对,谢谢了
- c语言编程之三天打鱼两天晒网
- C语言“三天打鱼两天晒网”问题
- C语言编程某人从某年1月1日开始,三天打鱼,两天晒网从键盘输入x年x月x日,问这个人在该年的
- C语言中国有句俗语叫做“三天打鱼两天晒网”求高手!!!
- 三天打鱼两天晒网c语言编程用结构体变量怎么写
c语言 三天打鱼,两天晒网 中国有一句话:三天打鱼,两天晒网 某人从1992-2-1开始三天打鱼,两天晒网 问:输入
这个比较简单一点,仅供参考#include《stdio.h》main(){ int year,month,day,i,j=0,s,k,sum=0; printf("Please enter year,month,day:\n"); scanf("%d,%d,%d",&year,&month,&day); for(i=1992;i《year;i++) { if(i%400==0) j+=366; else j+=365;} switch(month){case 1:s=0;break;case 2:s=31;break;case 3:s=59;break;case 4:s=90;break;case 5:s=120;break;case 6:s=151;break;case 7:s=181;break;case 8:s=212;break;case 9:s=243;break;case 10:s=273;break;case 11:s=304;break;case 12:s=334;break;default:printf("enter data error!"); } if((year%400==0)&&(month》2)) { sum=j+s+day+1; k=sum%5; if((k》=1)&&(k《=3)) printf("he was fishing at that day!\n"); if((k==4)||(k==0)) printf("he was sleeping at that day!\n");} else { sum=j+s+day; k=sum%5; if((k》=1)&&(k《=3)) printf("he was fishing at that day!\n"); if((k==4)||(k==0)) printf("he was sleeping at that day!\n");}}
c语言 三天打鱼两天晒网 在线等 急急急!
#include《stdio.h》
int main(){
int N, i;
scanf("%d", &N);
for (i = 0; i 《 N; i += 5);
if (i - N 》 1)
printf("这个人第%d天在“打鱼”\n", N)。else。
printf("这个人第%d天在“晒网”\n", N);
扩展资料:
C语言的注释符一般分为两种,一种是以“/*”开头,在中间加上注释内容,并以“*/”结尾的段落注释符。在“/*”和“*/”之间的即为注释。
另一种是以“//”开头,后面加注释内容的单行注释符。在“//”之后的即为注释。
C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。
注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不做处理,待调试结束后再去掉注释符。
关于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》
struct date
{
int year;
int month;
int day;
};
int days(struct date day)
{
static int day_tab=
{
{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,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;
cout《《day.day《《endl;
return day.day;
}
void main()
{
struct date today,term;
int yearday,year,day;
printf("Enter year/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("he was fishing at that day.\n"); /*打印结果*/
else
printf("He was sleeping at that day.\n");
}
C语言三天打鱼两天晒网问题,帮我看一下哪里有错,运行结果不对,谢谢了
if(e%4==0&&e%100!=0||e%400==0)这句话有问题 你&&运算符没学习好,它只需要判断一个为假就不会再判断, 对编译器而言 一旦e%4==0没有通过 编译器就不会再继续往下判断了,后面的都会被屏蔽 。例如:0&&1 这句 他只需要知道有0 编译器就已经判断为假了 它就不会再往后面看了,也不需要在看后面 。
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= {{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;td-=d1.d-1;for(i=1;i《d2.m;i++)td+=mon;td+=d2.d-1;return td;}int main(){struct d now,start={1990,1,1};int n,i,day;scanf("%d",&n);for(i=0;i《n;++i){scanf("%d%d%d",&now.d);}for(i=0;i《n;++i){day=days(start,now);if(day%5《3)printf("He was fishing on %d %d %d\n",now.d);elseprintf("He was basking on %d %d %d\n",now.d);}return 0;}
C语言“三天打鱼两天晒网”问题
根据题意可以将解题过程分为三步:
1、计算从1990年1月1日开始至指定日期共有多少天;
2、由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3、根据余数判断他是在“打鱼”还是在“晒网”;若 余数为1,2,3,则他是在“打鱼”;否则 是在“晒网”。
#include 《stdio.h》/*定义日期结构体*/typedef struct date { int year; int month; int day;} DATE;/*判断是否为闰年,是返回1,否返回0*/int isLeap (int year) { return ( (year%4==0 && year%100!=0) || (year%400==0) );}/*计算指定日期距离1990年1月1日的天数*/int countDay (DATE currentDay) { int perMonth={0,31,28,31,30,31,30,31,31,30,31,30}; /*每月天数数组*/ int totalDay=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+=1; /*将本年内的天数累加到totalDay中*/ for(i=0; i《currentDay.month; i++) totalDay+=perMonth; /*将本月内的天数累加到totalDay中*/ totalDay+=currentDay.day; /*返回totalDay*/ return totalDay;}int main(void) { DATE today; /*指定日期*/ int totalDay; /*指定日期距离1990年1月1日的天数*/ int result; /*totalDay对5取余的结果*/ int error; do { /*输入指定日期*/ printf("Please input the year/month/day :\n"); scanf("%d/%d/%d", &today.year, &today.month, &today.day); printf("\n"); error=0;if(today.year《1990) /*判断日期格式是否正确*/ {printf("The year should be larger than 1990!\n");error=1;}if(today.month《1||today.month》12){printf("The month input is error!\n");error=1;}if(today.day《0||today.day》31) {printf("The day input is error!\n");error=1;}printf ("======================================================\n\n"); } while(error); totalDay=countDay(today); /*求出指定日期距离1990年1月1日的天数*/ /*天数%5,判断输出打鱼还是晒网*/ result=totalDay%5; if(result》0 && result《4) printf("fishing!\n"); else printf("sleeping!\n"); printf("\n"); return 0;}
运行结果
1991/10/25,打渔
1992/10/25,晒网
日期输入错误
C语言编程某人从某年1月1日开始,三天打鱼,两天晒网从键盘输入x年x月x日,问这个人在该年的
你好!
程序发上来,你看看吧,满意请采纳
/*如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日,以后的任意一天,输出该渔夫是在打渔还是晒网。*/#include《stdio.h》int leap(int a) //自定义函数leap,判断输入的年份是否为闰年{ if(a%4==0&&a%100!=0||a%400==0) return 1; else return 0;}int number(int y,int m,int d){ int sum=0,i,j; int a={31,29,31,30,31,30,31,31,30,31,30,31}; int b={31,28,31,30,31,30,31,31,30,31,30,31}; if(leap(y)==1) { for(i=0;i《=m-1;i++) sum+=a; } else { for(i=0;i《=m-1;i++) sum+=b; }for(j=2011;j《y;j++) if(leap(j)==1) sum+=366; //2011年到输入的年份是闰年加366 else sum+=365; //2011年到输入的年份不是闰年加365 sum+=d; return sum;}int main(){ int y,m,d,n; printf("请输入,年 月 日:\n"); scanf("%d%d%d",&y,&m,&d); n=number(y,m,d); if((n%5)《4&&(n%5)》0) //当余数是1,2,3时说明在打渔,否则在晒网 printf("%d年%d月%d日 打渔\n",y,m,d); else printf("%d年%d月%d日 晒网\n",y,m,d);}
C语言中国有句俗语叫做“三天打鱼两天晒网”求高手!!!
这是我的测试结果:可以识别不同的错误种类,包括日期格式错误,日期不存在等(空行也会被识别为错误):Please type in date as yyyy-mm-dd for each linethe last line should be 0warning: this program uses gets(), which is unsafe.输入:2013-10-012010-08-302012-06-312013-05-311998-09-12nothing0输出:2013-10-01: he was fishing at that day 2010-08-30: he was sleeping at that day. 2012-06-31: Error: date doesn’t exist2013-05-31: he was sleeping at that day. 1998-09-12: Error: date too early : Error: wrong format nothing: Error: wrong format 代码:#include 《stdio.h》#include 《stdlib.h》#include 《string.h》#define NEW (node *)malloc(sizeof(node))#define MAX_CHAR_IN_LINE 50typedef struct node{ char* date; node* next;} node;int lengOfString(char* string){ int length=0; while(string!=’\0’ && length 《 MAX_CHAR_IN_LINE) length ++; return length;}bool checkFormat(char* string){ int i=0; while(string) { if(i!=4 && i!=7) { if(string》’9’ ) return false; } else { if (string!=’-’) return false; } i++; } if(i!=10) return false; return true;}bool isLeapYear(int year){ if ((year % 4 == 0) && !(year % 100 == 0)) return true; else if(year % 400 ==0) return true; return false;}int daysInMonth(int year, int month){ int table={ 31,28,31,30,31,30,31,31,30,31,30,31}; if (isLeapYear(year)) table=29; return table;}int checkDate(char* string){ string=’\0’; string=’\0’; int year=atoi(string); int month=atoi(&string); int day=atoi(&string); if(month》12 || month 《 1 ) return -1; if( day 《1 || day》 daysInMonth(year,month)) return -1; if(year 《 2000) return -2; int days=0; int ite_year; int ite_month; for (ite_year=2000; ite_year《=year;ite_year++) { for(ite_month=1;ite_month《 (ite_year==year ? month : 13);ite_month++) { days+= daysInMonth(ite_year,ite_month); } } days+=day; int remainder=days%5; if(remainder==4 || remainder==0) return 0;//sleeping else return 1;//fishing}void printList(node* head){ while(head!=NULL) { printf("%s: ",head-》date); if(checkFormat(head-》date)) { int value=checkDate(head-》date); if (value==-1) printf("Error: date doesn’t exist\n"); if (value==-2) printf("Error: date too early \n"); if (value==0) printf("he was sleeping at that day. \n"); if (value==1) printf("he was fishing at that day \n"); } else { printf("Error: wrong format \n"); } head=head-》next; }}int main(){ printf("Please type in date as yyyy-mm-dd for each line\n"); printf("the last line should be 0\n"); node* head=NEW; node* tail=head; while(true) { char* input=(char*)malloc(MAX_CHAR_IN_LINE*sizeof(char)); gets(input); if (strncmp(input,"0",MAX_CHAR_IN_LINE)==0) break; int str_length=lengOfString(input+1); char* date= (char*)malloc(sizeof(char)*str_length); strcpy(date,input); free(input); node* entry=NEW; entry-》date=date; entry-》next=NULL; tail-》next=entry; tail=entry; } printList(head-》next); return 0;}
三天打鱼两天晒网c语言编程用结构体变量怎么写
三天打鱼两天晒网c语言编程用结构体变量解题思路如下:
1、计算从 1990年1月1日开始至指定日期共有多少天;
2、由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3、根据余数判断是在“打鱼”还是在“晒网”;若余数为 1,2,3,则他是在“打鱼”否则是在“晒网”。
接下来的代码就可以根据自己所学的知识进行解决了。
本文相关文章:
三天打鱼两天晒网c语言编程(C语言编程某人从某年1月1日开始,三天打鱼,两天晒网从键盘输入x年x月x日,问这个人在该年的)
2024年7月23日 13:50
更多文章:
苹果icloud官网登录(icloud官网的登录入口是什么)
2024年8月21日 20:00
itunesstore与appstore关闭打不开(iTunes Store与App store 显示关闭 怎么办)
2024年6月21日 07:46
有没有比较简单的照片书制作软件?有福网注册在手机上该如何操作
2023年11月30日 01:40
浩辰cad2009(求!~!浩辰CAD2009专业版的注册码跟激活码~!求!!~)
2024年7月2日 20:35
英雄联盟娜美出装(《英雄联盟》沙皇加娜美为什么伤害如此高出什么装备)
2024年6月29日 00:51
项思醒 ppt(王思聪吃瓜的高端女海王项思醒65页PPT是什么梗都说了些什么)
2024年6月29日 15:25
波克城市斗地主官方下载完整版(波克城市的明星斗地主安卓版在哪里下载 官网只能下载电脑版的)
2024年6月20日 21:55