我这里怎么错了?大佬求解!
输入 x,yx,y,输出 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。输入格式
输入两个正整数 x,yx,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;
}
{:5_90:} 本帖最后由 jackz007 于 2022-11-30 22:06 编辑
闰年条件写错了
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {// 应该是 y % 100 != 0
你的 while 循环只能得到 区间内的闰年数量,却不能记录每一个闰年的年份数值,为了在统计计数的同时,也记下闰年的年份,避免第二次循环,需要开辟一个一维数组。
这是我写的代码:
#include <stdio.h>
int main(int argc , const char ** argv) // argv 是指针数组,而不是一个指针
{
int d , 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 = year ;
}
}
printf("%d\n" , count) ;
printf("%d" , d) ;
for(i = 1 ; i < count ; i ++) printf(" %d" , d) ;
printf("\n") ;
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
1989 2001
3
1992 1996 2000
D:\\C> #include <stdio.h>
int main(int argc,const char*argv)
{
int x,y;
scanf("%d %d",&x,&y);
int i=x,count=0;
while(i<=y){
if(i%400==0||(i%4==0&&i%100!=0)){
count++;
printf("%d\n",i);
}
i++;
}
printf("%d\n",count);
return 0;
}
我想通了,谢谢!
页:
[1]