0-2006年,闰年总数

Home Home
引用 | 编辑 csr
2011-03-04 22:29
楼主
推文 x0
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int i,rem400,rem100,rem4,sum=0;
  for(i=0;i<=2006;i++)
  {
  rem400=i%400;
  rem100=i%100;
  rem4=i%4;
 
    if(((rem4==0)&&(rem100!=0))||(rem400==0))
  ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 totsi
2011-03-07 10:00
1楼
  
请问一下~

这边所说的闰年总和指的是所有润年的年份总和吗?
还是只要算出有几个闰年就好?

因为我看您提供的程式码里面,只有判定是否为闰年,并没有做任何计数的动作。^^m

如果要贴程式码的话,建议放在"复制程式
 
"里面,这样您贴的程式码就不会被当成网页内容进行排版了。

献花 x0
引用 | 编辑 csr
2011-03-08 08:51
2楼
  
大大您好
小弟现已有那一年是闰年了
现在就是要把这些闰年数目加起来看总数有多少个闰年
小弟有设一个变数sum=0
因为写不出来所以就没有计数动作
若大大可以帮忙
是否可帮小弟加总一下有多少个闰年(就是所有闰年个数总和)
谢谢

献花 x0
引用 | 编辑 totsi
2011-03-08 14:28
3楼
  
目前只能用脑袋想,所以测试就要麻烦您玩玩看噜XDD

如果只是要算个数,是没那么复杂。

底下省略头尾的部份
复制程式
....
  if(((rem4==0)&&(rem100!=0))||(rem400==0))
  {
     ++sum;
     printf("闰年=%d\t",i);
  }
....


记得在进入回圈前要归零就是了。

献花 x0
引用 | 编辑 csr
2011-03-08 21:51
4楼
  
大大您好
跟据你的写法就和小弟重覆
if(((rem4==0)&&(rem100!=0))||(rem400==0))
    printf("闰年=%d\t",i);



if(((rem4==0)&&(rem100!=0))||(rem400==0))
{
  ++sum;
  printf("闰年=%d\t",i);
}
只是大大的程式码多了一个没有用到的++sum
在程式内多没去使用到
所以不管怎么用
结果还是跟小弟的一样
不知小弟这样说明
大大您可清楚
因为小弟要的是所有闰年个数及所有闰年个数的总和
比如说总数486个闰年
像这样的结果
谢谢
++sum;
  printf("闰年=%d\t",i);
小弟把 i 改成sum后结果如下
不知怎样把它弄整齐


献花 x0
引用 | 编辑 星辰雪
2011-03-08 23:09
5楼
  
资料笔数太多
我觉得好难排整齐
我有测试了一下
但是都不怎么满意

献花 x0
引用 | 编辑 totsi
2011-03-09 15:00
6楼
  
Reference:
XL:判断年份是否为闰年的方法

Character Set要设定为Use Multi-Byte Character Set。
复制程式
#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
       int nCountYear = 0;                                          //目前年份
       int nTotalLeapYearNum = 0;                     //总闰年个数
       int nTotalLeapYearSum = 0;                     //所有闰年年份总和
       int nStartYear = 0;                                                 //开始判定年份
       int nEndYear = 2006;                                   //最后判定年份

       printf("====== Start to show the Leap year between %d and %d =====\n", nStartYear, nEndYear);
       //NOTE:每年都判定
       for ( int nCountYear = nStartYear ; nCountYear <= nEndYear ; nCountYear++ )
       {
              if ( ((nCountYear%4 == 0) && (nCountYear%100 != 0)) ||                     //4的倍数,且不为100的倍数。              For 0~399
                      ((nCountYear%100 == 0) && (nCountYear%400 == 0) )              //100的倍数,且为400的倍数。              For 400~???
                      ) 
              {
                     ++nTotalLeapYearNum;                                                 //计算年份个数
                     nTotalLeapYearSum += nCountYear;              //计算年份总合
                     if ( nTotalLeapYearNum%10 != 0 )
                     {
                            printf("%04d  ", nCountYear);
                     }else{
                            printf("%04d\n", nCountYear);
                     }
              }
       }       //End of for ( int nCountYear = nStartYear ; nCountYear <= nEndYear ; nCountYear++ )
       
       printf("\n====== End to show the Leap year between %d and %d =====\n", nStartYear, nEndYear);
       printf("\n====== Statistics Data ======\n");
       printf("There are %d leap years.\n", nTotalLeapYearNum);
       printf("The sum of leap years is %d.\n", nTotalLeapYearSum);

       ::system("pause");
       return 0;
}


本帖包含附件
档名: zip LeapYear.rar   (2022-06-09 14:17 / 283 KB)  
Sample
下载次数:2


献花 x2
引用 | 编辑 csr
2011-03-09 20:44
7楼
  
大大
您的程式经过编译后
有下面两项 错误
一是连结也就是没定义`WinMain@16' 一是传回值是1
因小弟还没学那么难的写法
所以也不知卡在那里
希望大大您再看看
好吗
谢谢
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status

献花 x0
引用 | 编辑 csr
2011-03-14 15:34
8楼
  
有下载回来
感谢大大
不过可能小弟要研究一下
因为小弟还没学的那么复杂
谢谢

献花 x0
引用 | 编辑 星辰雪
2011-03-14 16:56
9楼
  
要使用 Visual Studio 当编译软体喔
不是使用 Dev c++

这排版 漂亮多了

献花 x0