none
请问版主我的两段闰年判断有错吗? RRS feed

  • 问题

  • 两段
    // 闰年2.cpp : 定义控制台应用程序的入口点。
    //2400 is 2100 isnot 
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {int year,n(0);
    bool leap;
    
    for (year=0;year<=2012;year++)
    {if (year%4 !=0)
      leap=false;
    else if (year%100!=0)leap=true;
    else if(year%400!=0)leap=false; 
    else leap=true;
    if (leap)
    {cout<<year<<" ";
    n++;
    if(n>=5)
    {n=n-5;cout<<endl;}
    
    }
    }
    	return 0;
    }
    -------
    // 闰年3.cpp : 定义控制台应用程序的入口点。
    //2400 is 2100 isnot 
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {int year,n(0);
    bool leap;
    
    for (year=0;year<=2012;year++)
    {if (year%4 !=0)
      leap=false;
    else if (year%100!=0)
         leap=true;
       else if(year%400!=0)
    		 leap=false; 
         else 
    		 leap=true;
    if (leap)
    {cout<<year<<" ";
    n++;
    if(n>=5)
    {n=n-5;cout<<endl;}
    
    }
    }
    	return 0;
    }
    
    关于闰年的程序不知为何结果一样?都对吗?分不清逻辑是普通语句还是嵌套,好像为何都一样呢?
    2011年6月9日 14:55

答案

  • 您上面的两个程序不是一样的吗?最好加上if-else语句下加上{}区分

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int year,n(0);
    	bool leap;
    	for (year=0;year<=2012;year++)
    	{
    		if (year%4 !=0)
    		{
    			leap=false;
    		}
    		else if (year%100!=0)
    		{
    			leap=true;
    		}
    		else if(year%400!=0)
    		{
    			leap=false; 
    		}
    		else 
    		{
    			leap=true;
    		}
    		if (leap)
    		{
    			cout<<year<<" ";
    			n++;
    			if(n>=5)
    			{
    				n=n-5;
    				cout<<endl;
    			}
    		}
    	}
    	return 0;
    }
    

     



    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月10日 0:21
    版主
  • 你那两个确实只有格式不一样。。。。可能我眼睛不好。。。。
    麻烦把正确答案设为解答。
    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月12日 10:08
    版主
  • 代码有什么适合不适合初学者的,哪个是正确的你能看懂就学哪个么。

    专门看了下,上下两段代码是一样的(不是结果,而是代码)

    要是因为初学就被一个计算闰年绊个十天半个月你就别想学会了。

    我初学的时候根本就没有看过这样的代码,只是知道点语法,算闰年都是自己想办法写……又不是什么高深的算法……


    0xBAADF00D
    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月13日 13:34
    版主

全部回复

  • 您上面的两个程序不是一样的吗?最好加上if-else语句下加上{}区分

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int year,n(0);
    	bool leap;
    	for (year=0;year<=2012;year++)
    	{
    		if (year%4 !=0)
    		{
    			leap=false;
    		}
    		else if (year%100!=0)
    		{
    			leap=true;
    		}
    		else if(year%400!=0)
    		{
    			leap=false; 
    		}
    		else 
    		{
    			leap=true;
    		}
    		if (leap)
    		{
    			cout<<year<<" ";
    			n++;
    			if(n>=5)
    			{
    				n=n-5;
    				cout<<endl;
    			}
    		}
    	}
    	return 0;
    }
    

     



    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月10日 0:21
    版主
  • 太复杂了,一句话就可以判断基本的闰年了

    bool isLeapYear(int y){

    return ((y % 4 ? false : (y % 100 ? true : (y % 400 ? false : true)));

    }


    0xBAADF00D
    2011年6月10日 1:32
    版主
  • 两位版主虽然回答了问题,但是我问的是闰年2,3两段判断闰年的if语句有何区别?最好用哪种的?还有哪个是嵌套的,如何嵌套的,普通的if和嵌套的if有何区别?

    这两段程序可都是从一本书上抄下来的吆!。



    我是想问哪种方法适合初学者?另一种复杂在哪里?
    2011年6月10日 2:10
  • 没什么区别。。。最后使用VisualEleven的方式,所有的if都加上{},即使只有一句。
    麻烦把正确答案设为解答。
    2011年6月10日 4:08
    版主
  • 怎没会没区别?我就很不理解,我是想问闰年2,3哪种方法适合初学者?另一种复杂在哪里?,如果有满意答案我会设为解答的。谢谢
    2011年6月10日 5:20
  • 你那两个确实只有格式不一样。。。。可能我眼睛不好。。。。
    麻烦把正确答案设为解答。
    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月12日 10:08
    版主
  • 代码有什么适合不适合初学者的,哪个是正确的你能看懂就学哪个么。

    专门看了下,上下两段代码是一样的(不是结果,而是代码)

    要是因为初学就被一个计算闰年绊个十天半个月你就别想学会了。

    我初学的时候根本就没有看过这样的代码,只是知道点语法,算闰年都是自己想办法写……又不是什么高深的算法……


    0xBAADF00D
    • 已标记为答案 Rob Pan 2011年6月20日 2:35
    2011年6月13日 13:34
    版主
  • 版主说得有道理。看别人的代码固然对学习有所帮助,但一方面这些代码要写的较为干净整齐才适合初学者,另一方面作为学习者,也可以先自己考虑从算法角度如何去实现,不要一味地被别人牵着鼻子走,只有自己的思想与示例得到了相互映证,才可能有最佳的效果。

    如果楼主认为两端代码是不一样的,不妨先指出哪里不一样,我们可以继续讨论不一样之处(但我实在没分辨出哪里有实质上的不同)。

    2011年6月14日 16:44
  • 可能是我的眼神不好,不过,代码是完全一样的.

    两种代码风格而已.

    紧缩还是松驰...

     

    推荐else,if,while这些代码段,甚至是switch case,也最好都加{}...就算是一个{;}这样的空语句.如下...

    if(nYear%100)

    {

    ;

    }

    2011年6月14日 19:05