三天打鱼两天晒网c语言编程,C语言三天打渔两天晒网问题

1,C语言三天打渔两天晒网问题if(result==0||1||2)printf("打鱼");}有错 , 不论result==0是否成立,设其为x , x||1||2的值永远为真,所以总是"打鱼" 。应该改为:if(result==0||result==1||result==2)printf("打鱼");
2,三天打鱼两天晒网c语言编程用结构体变量怎么写三天打鱼两天晒网c语言编程用结构体变量解题思路如下:1、计算从 1990年1月1日开始至指定日期共有多少天;2、由于“打鱼”和“晒网”的周期为5天 , 所以将计算出的天数用5去除;3、根据余数判断是在“打鱼”还是在“晒网”;若余数为 1,2 , 3 , 则他是在“打鱼”否则是在“晒网” 。接下来的代码就可以根据自己所学的知识进行解决了 。
3,c语言解答三天打鱼两天晒网#include "stdio.h"#define YEAR 2000#define DAYS 365int TotalDays(int year,int month,int day);int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){ int totalday; int year,month,day; printf("please input the yaer-month-day:"); scanf("%d-%d-%d",&year,&month,&day); totalday = TotalDays(year,month,day); printf("%d-%d-%d 是:",year,month,day); if (totalday % 5 == 0 || totalday % 5 == 4) { printf("晒网日!\n"); } else { printf("打鱼日!\n"); } return 0;}//统计当前的天数int TotalDays(int year,int month,int day){ int i = year - YEAR; int i_month = 1; int totalday = day; if ( year%4 == 0 && year%100 != 0) { a[2] = 29; } while (i_month < month) { totalday += a[i_month ++];} if ( i > 0 ) { totalday += DAYS*i + (i-1)/4 + 1; } return totalday;}【三天打鱼两天晒网c语言编程,C语言三天打渔两天晒网问题】
4,C语言三天打鱼两天晒网问题根据题意可以将解题过程分为三步:1、计算从1990年1月1日开始至指定日期共有多少天;2、由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;3、根据余数判断他是在“打鱼”还是在“晒网”;若 余数为1,2 , 3,则他是在“打鱼”;否则 是在“晒网” 。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#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[13]=/*每月天数数组*/ 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[2]+=1; /*将本年内的天数累加到totalDay中*/ for(i=0; i<currentDay.month; i++) totalDay+=perMonth[i]; /*将本月内的天数累加到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,晒网日期输入错误5,C程序设计中三天打鱼两天晒网问题#include "stdio.h"int main() int array[] =int year, month, day, y_temp, totalday;while(scanf("%d%d%d", &year, &month, &day) != EOF)totalday = 0;y_temp = year - 1990;totalday = totalday;int i = 1992, j = 0;while(i < year)if((i % 400 == 0) || ((i % 100 != 0) && (i % 4 == 0)))j++;i += 4;}totalday = totalday + j;totalday = totalday + array[month - 1];if(month > 2 && ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0)))) totalday++;totalday = totalday + day;totalday = totalday % 5;if(totalday > 0 && totalday < 4)printf("fishing\n");else printf("no fishing\n"); } return 0 ;}#include "stdio.h"#define year 2000#define days 365int totaldays(int year,int month,int day);int a[] = int main()int totalday;int year,month,day;printf("please input the yaer-month-day:");scanf("%d-%d-%d",&year,&month,&day);totalday = totaldays(year,month,day);printf("%d-%d-%d 是:",year,month,day);if (totalday % 5 == 0 || totalday % 5 == 4)printf("sleeping!\n");}elseprintf("fishing!\n");}return 0;}//统计当前的天数int totaldays(int year,int month,int day)int i = year - year;int i_month = 1;int totalday = day;if ( year%4 == 0 && year%100 != 0)a[2] = 29;}while (i_month < month)totalday += a[i_month ++];}if ( i > 0 )totalday += days*i + (i-1)/4 + 1;}return totalday;}//---注:日期输入格式,例子:2009-11-116,c语言打渔晒网int main() int i,a,b,c,tolday=0,day,x; scanf("%d-%d-%d",&a,&b,&c); for(i=2001;i<=a;i++)if((i%4==0&&i%100!=0)||i%400==0)tolday=366+tolday;elsetolday=365+tolday;}switch(b-1)case 0:day=0; break; case 1:day=31;break; case 2:day=59;break; case 3:day=90;break; case 4:day=120;break; case 5:day=151;break; case 6:day=181;break; case 7:day=212;break; case 8:day=243;break; case 9:day=273;break; case 10:day=304;break; case 11:day=334;break; } tolday=tolday+day+c-1; x=tolday%5; if(x%4==0)printf("He isdrying nets"); elseprintf("He is fishing"); return 0;}================================================1、for里面的if语句一致在循环里面,tolday的值只有最后一次有效2、switch没有default的case其他就看不出来了,没看到什么意思呵呵没看你的逻辑结构,不过这句:scanf("%d-%d-%d",&a,&b,&c); 你输入的时候也要以-分隔,如果还不行你可以scanf("%d,%d,%d",&a,&b,&c);然后输入的时候以,分隔#include&lt;stdio.h&gt;int main() int i,a,b,c,tolday=0,day,x; while(scanf("%d-%d-%d",&amp;a,&amp;b,&amp;c)!=eof)tolday=0;//重新初始化一下,否则上一次的结果未清除 只此一处bug //添加了上行真的是三天打渔,两天晒网了 for(i=2001;i&lt;=a;i++)if((i%4==0&amp;&amp;i%100!=0)||i%400==0) tolday=366+tolday; else tolday=365+tolday; } switch(b-1)case 0:day=0; break; case 1:day=31; break; case 2:day=59; break; case 3:day=90; break; case 4:day=120; break; case 5:day=151; break; case 6:day=181; break; case 7:day=212; break; case 8:day=243; break; case 9:day=273; break; case 10:day=304; break; case 11:day=334; break; default:printf(""); } tolday=tolday+day+c; if(a==2000&amp;&amp;b&gt;2) tolday++; x=tolday%5; if(x%4==0) printf("he is drying nets\n"); else printf("he is fishing\n"); } return 0;}

    推荐阅读