| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3062 人关注过本帖
标题:判断闰年程序,如何判断多次?
只看楼主 加入收藏
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
判断闰年程序,如何判断多次?
//编写闰年判断程序
#include<stdio.h>
int main(void)
{
    unsigned int year;
    printf("请输入有效年份:\n");
    scanf("%d", &year);
    if (year % 4 != 0)
       printf("%d不是闰年。\n", year);
    else if (year % 4 == 0 && year % 100 != 0)
       printf("%d是闰年。\n", year);
    else if (year % 400 == 0)
       printf("%d是闰年。\n", year);
    printf("请再次输入有效年份:\n");
    scanf("%d", &year);
    return 0;
}
如何使程序在判断某一年后,再次输入任意年能再次判断。先谢过了。
搜索更多相关主题的帖子: include return 如何 
2016-05-07 09:06
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:3 
程序代码:
#include<stdio.h>
int main(void)
{
    unsigned int year,n;
    scanf("%d",&n);
    while(n--) {
      printf("请输入有效年份:\n");
      scanf("%d", &year);
      if (year % 4 != 0)
         printf("%d不是闰年。\n", year);
      else if (year % 4 == 0 && year % 100 != 0)
         printf("%d是闰年。\n", year);
      else if (year % 400 == 0)
         printf("%d是闰年。\n", year);
      /*printf("请再次输入有效年份:\n");*/
      /*scanf("%d", &year);*/
    }
    return 0;
}

未佩好剑,转身便已是江湖
2016-05-07 10:22
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
你的if else逻辑有问题,不能输出诸如1700等不能整除400的整百年的判断结果。

   唯实惟新 至诚致志
2016-05-07 10:37
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:2 
循环咯

好好学习,天天向上!
2016-05-07 11:00
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 3楼 qq1023569223
    经验证,确实无法判断1700之类的年份。
    求教:我试着在: else if ((year % 4 == 0) && (year % 100 != 0))加括号也无法判断。这说明是逻辑错误不是语法错误吗?错误的根源在于 if else if无法覆盖所有的闰年集合吗?为什么会出现无法判断的情况?按照我的思路是否无解?
   


C语言自学者(初登殿堂)
2016-05-07 15:32
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 2楼 alice_usnet
    验证你的程序,能循环判断,但第一个输入的年份无法判断。


C语言自学者(初登殿堂)
2016-05-07 15:47
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
    附上我在本论坛搜的,最接近我思路的答案。
//编写闰年判断程序
#include<stdio.h>
int main(void)
{
    int year, leap;
    while (scanf("%d", &year) != -1)
    {
        if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 ==0))
             leap = 1;
        else
             leap = 0;
        if (leap == 1)
             printf("%d是闰年。\n", year);
        else
             printf("%d不是闰年。\n", year);
    }
    return 0;
}


C语言自学者(初登殿堂)
2016-05-07 15:49
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
程序代码:
#include<stdio.h>

bool _isLeapYear(int year)
{
    if (year%3200 == 0)
        return (year%172800 == 0);
    else
        return (((year%4 == 0) && (year%100 != 0)) || (year%400 == 0));
}

main(void)
{
    int year;
    for (;;)
    {
        printf("请输入有效年份:");
        scanf("%d", &year);
        if (year <= 0)
            break;
        if (_isLeapYear(year))
                printf("%d 闰年\n", year);
            else
                printf("%d 平年\n", year);
    }
}
2016-05-07 16:10
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
    7楼的程序有错误,会把1700等能被4整除,同时也能被100整除的年份判断为闰年。附上我改正后的程序:
//编写闰年判断程序
#include<stdio.h>
int main(void)
{
    unsigned int year;
    printf("请输入有效年份:");
    while(2000 <= scanf("%d", &year) <= 2500)
    {
      if (year % 4 != 0)
       printf("%d不是闰年。\n", year);
      else if ((year % 4 == 0) && (year % 100 != 0))
       printf("%d是闰年。\n", year);
      else if (year % 400 == 0)
       printf("%d是闰年。\n", year);
      else
       printf("%d不是闰年。\n", year);
      printf("请再次输入要判断的年份:");
    }
    return 0;
}


C语言自学者(初登殿堂)
2016-05-08 13:55
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
    最后附上我的思路的答案,自己修改完善了。作为初学者,还是减少了变量的使用,少用循环嵌套。(这个是改正7楼的程序,上楼是我自己思路改写的)
//编写闰年判断程序
#include<stdio.h>
int main(void)
{
    unsigned int year, leap;
    printf("请输入要判断的年份:");
    while (scanf("%d", &year) != -1)
    {
        if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 ==0))
             leap = 1;
        else
             leap = 0;
        if (leap == 1)
             printf("%d是闰年。\n", year);
        else
             printf("%d不是闰年。\n", year);
        printf("请再次输入要判断的年份:");
    }
    return 0;
}


C语言自学者(初登殿堂)
2016-05-08 14:01
快速回复:判断闰年程序,如何判断多次?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022788 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved