public class Fri13
{
void main(String[] args)
{
int year=1900,month=1,s1;
int[] result={0,0,0,0,0,0,0};
int week,i,k;
for (;year<2300;year+=1)
{ if (year%4==0)
{int[] monthday={0,31,28,31,30,31,30,31,31,30,31,30,31};}
else {int[] monthday={0,31,29,31,30,31,30,31,31,30,31,30,31};}
for (;month<13;month+=1)
{int s2=0;
s1=365*(year-1900)-(year/4-1);
for (i=0;i<month-1;i+=1)
{
s2+=monthday[i];
}
week=(s1+s2)%7;
result[week-1]+=1;
}
}
System.out.println(result[0]+","+result[1]+","+result[2]+","+result[3]+","+result[4]+","+result[5]+","+result[6]);
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------
这个题目是:
写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数。
已知:1900年1月1日是星期一。
样例输入:20
样例输出:36 33 34 33 35 35 34
第一个想法:把日期弄成日历的形式,就是一个二维数组,在这个矩阵里每一列每个数查一遍,是13的就记录下来。但是我现在还做不出日历,找找了别人的一些方法,内容超出了我已学的范围,无法应用,遂放弃这个想法。
第二个想法:每年只算12天,就是每月的13号。主函数里的思路如下
先是年份依次增加的for循环,里面嵌套月份增加的for循环。
在某一个月份时,把他前面月份的天数加起来再加上13,这个和对7取余,余数就是星期。
此外,把星期存入定义好的week[7]数组里,最后把这7个数输出。
敲出来编译第一遍出现70多错误,基本是符号规则的问题,太不熟悉了,整改几遍后是下面这样。但是仍然有一个错误,红色那句提示monthday找不到符号,查了很多地方也没能解决。
另外,定义的时候是否用public和static还没有弄懂,可能错误会在这??懂了以后回来看这段。