国内外网站建设2017企业邮箱查询
2.特殊日期 - 蓝桥云课
错误原因:
分不清大小月,将闰年的2月天数当成了28天,非闰年当成了27天,因此出错
错误代码如下:
package Lanqiao;import java.util.Scanner;/*** @author zb* date2025/3/16 13:22*/
public class L3495 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int count = 0 ;int m[] = {0,31,27,31,30,31,30,31,30,31,31,30,31};for (int i = 2000; i <=2000000 ; i++) {for (int j = 1; j <=12 ; j++) {// 判断闰年,如果是闰年的话就给二月增加一天if(i%400==0||(i%4==0&&i%100!=0)){if(j==2){m[j] =28;}}for (int k = 1; k <=m[j] ; k++) {if(i%j==0&&i%k==0){count++;}if(i==2000000){i = 2000001;j = 13;break;}}}m[2] =27;}System.out.println(count);in.close();}
}
看了一遍解析之后又错了,少了个=号
package Lanqiao;/*** @author zb* date2025/3/16 13:42*/
public class L3495 {public static void main(String[] args) {
// 记录每个月有多少天int []m = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 记录数量int count = 0 ;
// 年for (int i = 2000; i <2000000 ; i++) {// 判断闰年,闰年给2月+1天if(i%400==0||(i%4==0&&i%100!=0)){m[2] = 29;}
// 月份for (int j = 1; j <=12 ; j++) {
// 日期for (int k = 1; k <=m[j] ; k++) {if(i%j==0&&i%k==0){count++;}
// 退出循环的条件2000000年1月1日
// 因为年和月的循环条件分别是<=2000000和<=12if(i==2000000&&j==1&&k==1){i=2000001;j = 13 ;break;}}}
// 默认下一年不是闰年m[2] =28;}System.out.println(count);}
}
把j<2000000改成<=2000000
会了也做不对