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