关键词不能为空

位置:淮南象牙塔成语大世界 > 成语大全 > C语言,三天打鱼两天晒网的问题

C语言,三天打鱼两天晒网的问题

作者:淮南象牙塔
日期:2021-04-15 07:35:07
阅读:

struct date{
int year;
int month;
int day;}
//末尾缺了个分号
struct date{
int year;
int month;
int day;};

for(j=1;1<(p+0)->month;j++){
b=b+tab[j];}
//我不知道你本来的逻辑是什么。你原本的写法,只要月份大于1,这里会一直循环,直到超过数组下限,造成非法访问内存。
//把1<(p+0)->month改成j<(p+0)->month。具体什么逻辑你自己判断,我只是给你一个思路
for(j=1;j<(p+0)->month;j++){
b=b+tab[j];}


//统计当前的天数
int TotalDays(int year,int month,int day)
{
int i = year - YEAR; //计算输入年份与2000年的差值,若大于等于1则超过了一年,否则不满一年
int i_month = 1; //从输入年份的第一个月开始计算
int totalday = day; //把输入月份对应的天数先写入总天数,以便后续累加计算
if ( year%4 == 0 && year%100 != 0)
{
a[2] = 29; //如果是闰年,则把a数组中2月的天数改为29天
}
while (i_month < month) //从一月到输入的月份之前,计算输入年份的总天数
{
totalday += a[i_month ++]; //从一月份开始,把a数组中存放的每个月的天数进行累加,一直加到输入的月份之前,输入月份的天数已经事先用来初始化累积和了,不用再加入了。
}

if ( i > 0 ) //如果距离2000年超过了一年,还要补上整年的天数
{
totalday += DAYS*i + (i-1)/4 + 1; //整年天数统一按照365天(DAYS)计算,由于2000年是闰年,所以以后每满四年多补一天( (i-1)/4 + 1 )。
}

return totalday;
}


根据题意可以将解题过程分为三步:

1、计算从1990年1月1日开始至指定日期共有多少天;

2、由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;

3、根据余数判断他是在“打鱼”还是在“晒网”;若 余数为1,2,3,则他是在“打鱼”;否则 是在“晒网”。

#include 

/*定义日期结构体*/
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]={0,31,28,31,30,31,30,31,31,30,31,30}; /*每月天数数组*/
int totalDay=0,year,i;

/*求出指定日期之前的每一年的天数累加和*/
for(year=1990; year if(isLeap(year)) /*判断是否为闰年*/
totalDay=totalDay+366;
else
totalDay=totalDay+365;
}
/*如果为闰年,则二月份为29天*/
if(isLeap(currentDay。year))
perMonth[2]+=1;
/*将本年内的天数累加到totalDay中*/
for(i=0; 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,晒网

日期输入错误

    相关推荐

    聚合标签
    郭德纲相声《偷斧子》里面的唱词(我佛耶……那段)是什么曲子?... 忐忑不安的词语是什么 核舟记全文重点字词翻译 逢入京使 顺天致性是什么意思 什么学什么练的成语 关于梦想有关的成语 以“歹”开头的成语 接龙 代表死亡的四字成语 岂容他人酣睡!什么意思 太行山在什么地方啊 逃组什么词 成语飞黄腾达什么意思 “歹”字开头的成语有哪些? 员工把老板的公司挤垮了 蹄闲三寻是什么生肖? 话里什么什么的成语 风在前面的成语 君子之行,静以修身俭以养德非淡泊无以志裸宁静无以致远,什么意... 形容流行的成语有哪些? 描写逃跑的成语有哪些? 头胀重失寐.浊久重着... 墨犀通明,禅味一如 成语玩命猜图中一个灯泡里面有个感叹号成语 从事... 颇能组什么词 五劳七伤指啥动物 成语低什么浅什么 什么中什么什么成语 成语里有死和生的成语 以水字开头的成语有那些? 第二个字是滚最后一个字是腾的成语 女孩说无论发生什么都顺天而行顺其自然不争说明什么? 写出aabb式的词语有哪些 形容提前做好准备的成语有哪些? 忍把浮名换了浅斟低唱 一句的含义是什么 纹丝不动和岿然不动区别 哪位学霸解释解释解什么成语啊 秦时明月少司命为什么不能开口说话?她的来历是什么 逃可以组什么词 ()()()... 水什么山什么词语 人生八苦 猜成语,脑筋急转弯 一动不动 类似这样的词语 描写亲热的成语有哪些 带有重叠的词语有哪些? 猜字谜左边不出头 苍龙日暮还行雨 纹风不动,打一数字 含有汤字的成语 打一成语什么腾什么跃 有什么电脑游戏可以双人联机?(不是网络游戏 列如怪物猎人) 鲁迅逝世时的时代背景 请按要求说一个成语低什么浅什么 为什么抹茶起源于中国,却在日本发扬光大 忌怎么组词 死气白咧有啥近义词 求古文翻译[小时了了] 太行山是我国哪些自然地理分界线 痛饮狂歌空度日 蛇若无头,绝对不行美食当前也难吞! 一不对路,马上抽身何... 有什么好听的歌啊,至少推荐10首,否则不采纳 为什么中国女性都是拜金主义 成语 含有“乌”字的成语有哪些? 乌什么花什么成语