| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 829 人关注过本帖
标题:2007下半年程序员考试题目.求助!
取消只看楼主 加入收藏
heiye9807
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-14
收藏
 问题点数:0 回复次数:0 
2007下半年程序员考试题目.求助!
已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。
函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。
程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)分别表示year是(或不是)闰年。
[C语言函数]
int isLeapYear( int year)
{
if(year%4==0 && year%100!=0 || year%400==0)
return 1;
else
return 0;
}
int count_5_13(int year)
{  int date;
   long days = 0;
   int m,y,c=0;
        if(year < 1900)
        return -1;
        days = 12;
  for (y = 1900; y < year; y++)
  {days += 365;
   if (isLeapYear(y))
   days++;
   }
   date = ((days % 7) + 1) % 7;
   c = (date==5) ? 1 : 0;
  for(m = 1;  m < 12; m++)
  {switch (m)
  {case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                    days = 31;  break;
            case 4: case 6: case 9: case 11:
                    days = 30;  break;
            case 2: days = 28;
  if (year%4==0 && year%100!=0 || year%400==0)    days = 29;
                    break;
        }/* end of switch*/
        date =((days % 7) + date ) % 7;
        if (date == 5)
        c++;
}
return c;
}

main()
{
int YEAR,jishu;
scanf("%d",&YEAR);
jishu=count_5_13(YEAR);
printf("%d",jishu);
getch();
}
...................................................
1.date = ((days % 7) + 1) % 7;
2.date =((days % 7) + date ) % 7;
这2个语句看不明白.?
搜索更多相关主题的帖子: 程序员考试 题目 
2008-03-04 13:52
快速回复:2007下半年程序员考试题目.求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025571 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved