鱼C论坛

 找回密码
 立即注册
查看: 8266|回复: 22

我又来了,闰年程序问题!

[复制链接]
发表于 2013-3-17 12:48:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
图片:
1.png
代码:
#include<stdio.h>
void main()

{
        int a;
        printf("请输入一个年份,判断是否为闰年:\n");
        scanf("%d",&a);
        if(a%4==0)
        {
                if(a%100==0)
                {
                        if(a%400==0)
                        {
                                printf("这是个平年!\n");
                        }
                }
        }
        else
        {
                printf("这是个闰年!\n");
        }
}






编译的时候不会出错,但运行的时候就出问题了.感觉程序是对的..实际是错的,哪里出错了?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:11:57 | 显示全部楼层
都没说这个问题是什么呢,你这样写的话就是只判断了一个条件,a%400而已,闰年应该不是这样写的吧
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:15:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:19:05 | 显示全部楼层
33994232 发表于 2013-3-17 13:11
都没说这个问题是什么呢,你这样写的话就是只判断了一个条件,a%400而已,闰年应该不是这样写的吧

看看这个有没有逻辑错误:
#include<stdio.h>
void main()

{
        int a;
        printf("请输入一个年份,判断是否为闰年:\n");
        scanf("%d",&a);
    if(a%4==0)
        {
                if(a%100==0)
                {
                        if(a%400==0)
                        {
                                printf("这是个平年!\n");
                        }
                        else if(a%400!=4)
                        {
                                printf("这是个闰年!\n");
                        }
                }
        }
        else if(a%4!=0)
        {
                printf("这是个平年!\n");
        }
}




刚才短路了!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:22:05 | 显示全部楼层
判断闰年一般的规律为: 四年一闰,百年不闰,四百年再闰。其简单计算方法:1。能被4整除而不能被100整除。(如2004年就是闰年,1800年不是。)2。能被400整除。(如2000年是闰年)

#include<stdio.h>
void main()

{
        int a;
        printf("请输入一个年份,判断是否为闰年:\n");
        scanf("%d",&a);
        if( (a%4==0 && a%100 !=0) || a%400==0 )       
                printf("这是个闰年!\n");                       
        else
                printf("这是个平年!\n");
       
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:22:28 | 显示全部楼层
{:7_168:}{:7_168:}总觉得怪怪的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:24:48 | 显示全部楼层
757511090 发表于 2013-3-17 13:22
总觉得怪怪的

1楼的逻辑出错了,看看楼上的有没有出错
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:26:29 | 显示全部楼层
友来友网 发表于 2013-3-17 13:22
判断闰年一般的规律为: 四年一闰,百年不闰,四百年再闰。其简单计算方法:1。能被4整除而不能被100整除。(如 ...

这个也觉得怪怪的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:28:41 | 显示全部楼层
if(year%4==0&&year%100!=0 || year%400==0){这样试试、。。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:32:08 | 显示全部楼层
757511090 发表于 2013-3-17 13:28
if(year%4==0&&year%100!=0 || year%400==0){这样试试、。。。

我也想了用这个方法,因为也出错了就没有用下去了,接着就用了现在的这个方法.你写的如果可以被100和4整除就是不能被400整除这种可能就不可以了,你想想看!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:34:44 | 显示全部楼层
l万lin 发表于 2013-3-17 13:32
我也想了用这个方法,因为也出错了就没有用下去了,接着就用了现在的这个方法.你写的如果可以被100和4整除就 ...

这个是正确的,不然你举个反例
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:37:38 | 显示全部楼层
友来友网 发表于 2013-3-17 13:34
这个是正确的,不然你举个反例

2100年是闰年吧?你的为平年,这就不符合了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:52:37 | 显示全部楼层
l万lin 发表于 2013-3-17 13:37
2100年是闰年吧?你的为平年,这就不符合了

2100不是闰年吧
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:56:49 | 显示全部楼层
5楼正解,楼主,你连判断闰年条件都没弄清楚,怎么写啊,这个可不是语法错误的问题啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-17 13:57:25 | 显示全部楼层
757511090 发表于 2013-3-17 13:52
2100不是闰年吧

查了一下是平年,彻底理解错了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 13:57:53 | 显示全部楼层
本帖最后由 757511090 于 2013-3-17 14:06 编辑

百科的闰年算法
公历闰年计算
(按一回归年365天5小时48分45.5秒)
①、普通年能整除4且不能整除100的为闰年。(如2004年就是闰年,1900年不是闰年)
②、世纪年能整除400的是闰年。(如2000年是闰年,1900年不是闰年)
③、对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除)(此按一回归年365天5h48'45.5''计算)2100%400!=0啊


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 14:03:04 | 显示全部楼层
#include<stdio.h>
main()
{
        int year,leap;
        printf("请输入年份:");
        scanf("%d",&year);
        if((year%400==0)||(year%4==0&&year&100!=0))
        printf("该年是闰年\n");
        else
        printf("该年是非闰年\n");
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 14:12:27 | 显示全部楼层
主楼我式了一下能正常运行呀
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 14:13:57 | 显示全部楼层
本帖最后由 煈云 于 2013-3-17 14:19 编辑

//java写闰年
import  java.util.*;
public class Demo{
public static void main(String[] args){
    Scanner sa = new Scanner(System.in);
    int a;
    if(a%4==0&&a%100!=0||a%400==0){
         System.out.println("是闰年");

}else{
         System.out.println("是平年");

}


}

}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-17 14:17:05 | 显示全部楼层
943566987 发表于 2013-3-17 14:12
主楼我式了一下能正常运行呀

结果不对嘛
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表