English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

被4整除且不被100整除,或被400整除者為閏年。
被4000整除不是閏年。
int main(int argc, char *argv[])
{int year;
printf("input\\n");
scanf("%d", &year) ;
if(year%4==0)
{if(year%100!=0)
printf("%d是閏年\\n",year);}

if(year%4!=0)
{printf("不是閏年\\n");}

if(year%4==0)
{if(year%100==0)
if(year%400!=0)
printf("%d不是閏年\\n",year);}
if(year%400==0)
printf("是閏年\\n");
前面是被4整除且不被100整除,或被400整除者為閏年。
請問要加上被4000整除不是閏年。要怎麼寫= =
我加上if(year%400==0)
if(year%4000==0)
printf("不是閏年\\n",year);
這樣會顯示是閏年 不是閏年
是不是因為他連 if(year%400==0)
printf("是閏年\\n");
這個條件都成立的關西
那我應該要怎麼寫呢~"~
我剛學而已,指令學的不多
很多邏輯也不太清楚
請用簡單一點的方式= =
我想了很久都寫不出來.......

2006-10-13 20:33:44 · 4 個解答 · 發問者 立豪 1 in 電腦與網際網路 程式設計

4 個解答

通常if 和 else 會一起學到,如果你這題只用if的話,如你所見會變得越來大,條件要越設越多。因為if、else 不會很難,你可以學學看,如下if(條件){  成立時執行}else{  不成立時執行}他們只會擇一執行會了這個之後,你可以很容易的寫出你原本的題目如下//後面的字是註解,以下不省略任何一個{、}號#includeint main(int argc, char *argv[]){     int year;     printf("input:");     scanf("%d",&year);     if( year%4 == 0 )  //如果輸入的數字可以被4整除時進入          {               if( year % 400 == 0 ) //如果輸入的數字可以被400整除,則一定是閏年                     {                         printf("是閏年\n");                    }               else  //輸入的數字不能被400整除時,那就看他可不可以被100整除                     {                         if ( year % 100 == 0 ) //可以被100整除時,不是閏年                             {                                  printf("不是閏年\n");                             }                         else                   //不可以被100整除,是閏年                              {                                    printf("是閏年\n");                             }                    }         }     else               //如果輸入的數字不可以被4整除時          {               printf("我不是4的倍數,絕對不是閏年\n");         }return 0;}到了以後學到更多時,甚至可以一行判斷,如#includeint main(int argc, char *argv[]){     int year;     printf("input:");     scanf("%d",&year);     if( year%4==0&&year%100!=0 || year%400==0 )          printf("是閏年");     else          printf("不是閏年");return 0;}至於你說的,加入4000這個條件你正好可以練習看看^^.

2006-10-14 17:34:56 補充:
謝謝補充^^.
這樣的確比較清楚

2006-10-13 21:14:48 · answer #1 · answered by adam! 5 · 0 0

這題我和意見二的看法完全不同!
&& 優先於 ||!
一個連這都不清楚的程式師,不能算一個及格的 C 程式師!
加上那個 ( ) 只是給不熟 C 的人較容易看懂!
對一個 C 程式師而言,那是浪費:浪費
 原始碼長度、
 硬碟空間、
 打字時間、
 未來讀程式時間、
 過去的業訓練、
 C 語言辛的設計!
經常這樣打,也會使程式師慢慢忘計 優先權的順序!
使程式執行變慢、寫程式變慢...
缺點遠多於優點!

2007-09-01 06:29:23 補充:
就像這題的 if 裡的順序
4 -> 100 -> 400
這是有速度上的差別的!
若改成
400 -> 100 -> 4
程式一樣,執行速度卻較慢!

不常做這樣的訓練,就寫不出快的程式來!
不常思考 operator 的 優先權,也是一樣的道理!

2007-09-01 07:30:38 補充:
竟然少了 2 個字!
 過去的〝專〞業訓練、
 C 語言辛〝苦〞的設計!

還錯了一個字
 慢慢忘〝記〞

為了不避不小心誤答,或遇到例外,自誤誤人,所以剛才做了實驗。
速度確如我說,速度比約為
1.461 : 1 (沒速度最佳化) 和
1.617 : 1 (速度最佳化)

2007-09-01 02:26:29 · answer #2 · answered by ? 7 · 0 0

樓上的解答大致正確,不過
if (year%4==0&&year%100!=0 || year%400==0)
最好改成
if ((year%4==0&&year%100!=0) || year%400==0)
代表 (year%4==0&&year%100!=0)判斷或 year%400==0判斷,其一成立就可!!

2006-10-14 09:34:20 · answer #3 · answered by maria 3 · 0 0

順序問題 順序問題 ._.\~/
我剛開始學的時候也是因為順序問題才弄不出來
(不過我現在還是一樣弱雞一隻= =..)

2006-10-13 20:42:47 · answer #4 · answered by Anonymous · 0 0

fedest.com, questions and answers