cccc678 发表于 2022-11-30 21:31:50

我这里怎么错了?大佬求解!

输入 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 21:59:18

本帖最后由 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>

cccc678 发表于 2022-11-30 22:28:51

#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]
查看完整版本: 我这里怎么错了?大佬求解!