强力味皇帝 强力味皇帝
关注数: 3 粉丝数: 76 发帖数: 3,765 关注贴吧数: 8
菜鸟求达人帮偶简化一下这段简单的代码!! 本人只念道小学3年纪课程,而且看谭浩强的只有4天,有很多地方不懂,且逻辑思维混乱。 请各位达人不要嘲笑偶。 这道题是这样,我每3天要去一次课外补习。其余两天不用去,就算是休息。 就是说上一天补习,休息两天。 我输入一个日期,某年 某月 某日。 程序自动计算出这天要不要去补习,或这天去过补习没。 如果没,显示出是第几天休息。 由于从2001年以前数据对此没有任何意义,所以只计算2001年以后的。 比如今天2009,12,8。就是上补习课。 先借用了《经典c程序100例》第4题的代码。 main() { int day,month,year,sum,leap,a,b,c; printf("\n please input year,month,day\n"); /*显示输入信息*/ scanf("%d%d%d",&year,&month,&day); /*输入年月日,用空格隔开*/ switch(month)                /*跳转到某月是当年的第几天*/ {    case 1:sum=0;break;    case 2:sum=31;break;    case 3:sum=59;break;    case 4:sum=90;break;    case 5:sum=120;break;    case 6:sum=151;break;    case 7:sum=181;break;    case 8:sum=212;break;    case 9:sum=243;break;    case 10:sum=273;break;    case 11:sum=304;break;    case 12:sum=334;break;    default:printf("DATA Error");break;    }    sum=sum+day; /*加上当月的天数*/    if(year%400==0||(year%4==0&&year%100!=0)) /*计算是否为闰年*/      leap=1;    else      leap=0;    if(leap==1&&month>2)   /*闰年是否是2月以后*/    sum=sum+1; /*闰年大于2月加1天*/    a=(year-2001)/4*366; /*经过的闰年数乘以闰年天数*/    b=((year-2001)-(year-2001)/4)*365; /*经过了非闰年数乘以365*/    sum=sum; /*这一步看似毫无意义,其实是指的补习时间的填补,因为2001年1月1号这一天刚好也是上补习课,所以值为0能被3整除,如果明天改为补习课就要sum+1*/    c=a+b+sum;/*计算从第一年开始到设定日期一共用了多少天*/    if(c%3==0)      printf("Go to school\n"); /*这一天是否能被3整除,如果能显示结果*/    else      printf("Today=%d\n",c%3);/*不能被3整除显示余数*/    } 由于"a"计算闰年的天数只有被4整除,所以只能计算到2100年这一天(对于我个人寿命来说够用了), 同样道理可以计算2001~2100之间的某一天是星期几. 只需要改为, sum=sum; /*由于2001年1月1日刚好是星期1,这段几乎可以删除*/ c=a+b+sum;    if(c%7==0)      printf("Sunday\n"); /*这一天是否能被7整除,如果能显示结果*/    else      printf("Today=%d\n",c%7); /*否则显示余数*/ } 偶现在也只学到了for语句,但总体感觉这个写的即幼稚有多余,求达人给个简化的方法. 或者减少一些代码. 请不要使用什么数组啊,指针啊!!因为我还没有学到,完全看不懂!
首页 1 2 3 下一页