|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入 x,yx,y,输出 [x,y][x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。
输入格式
输入两个正整数 x,yx,y,以空格隔开。
输出格式
第一行输出一个正整数,表示 [x,y][x,y] 区间中闰年个数。
第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。
输入输出样例
输入 #1复制
1989 2001
输出 #1复制
3
1992 1996 2000
说明/提示
数据保证,1582\le x < y \le 30001582≤x<y≤3000。
#include <stdio.h>
int main(int argc,const char*argv)
{
int x,y;
scanf("%d %d",&x,&y);
int i=x,year,count=0;
while(i<=y){
if(year%400==0||(year%4==0&&year%100==0)){
count++;
i++;
}
}
printf("%d\n",count);
printf("%d\n",i);
return 0;
}
本帖最后由 jackz007 于 2022-11-30 22:06 编辑
闰年条件写错了
- if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { // 应该是 y % 100 != 0
复制代码
你的 while 循环只能得到 [x , y] 区间内的闰年数量,却不能记录每一个闰年的年份数值,为了在统计计数的同时,也记下闰年的年份,避免第二次循环,需要开辟一个一维数组。
这是我写的代码:
- #include <stdio.h>
- int main(int argc , const char ** argv) // argv 是指针数组,而不是一个指针
- {
- int d[400] , i , x , y , year , count ;
- scanf("%d%d", & x , & y) ;
- for(count = 0 , year = x ; year <= y ; year ++) {
- if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
- d[count ++] = year ;
- }
- }
- printf("%d\n" , count) ;
- printf("%d" , d[0]) ;
- for(i = 1 ; i < count ; i ++) printf(" %d" , d[i]) ;
- printf("\n") ;
- }
复制代码
编译运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 1989 2001
- 3
- 1992 1996 2000
- D:\[00.Exerciese.2022]\C>
复制代码
|
|