第一段代碼哪兒錯(cuò)了,第二段代碼為什么是正確的
開始不知道閏年的條件
假設(shè)能被4整除的就是閏年
#include <stdio.h>
int main()?
{
? ? int year = 2014; //今年是2014年
? ? //補(bǔ)全一下代碼
? ? year = year/4
? ? if(year == 1)
? ? {
? ? ? ? printf("%s\n",'y');
? ? }
? ? else
? ? {
? ? ? ? printf("%s\n",'n');
? ? }
? ??
? ??
? ??
? ??
? ??
? ? return 0;
}
這段代碼哪兒錯(cuò)了?沒辦法編譯。
還有
#include <stdio.h>
int main()?
{
? ? int year = 2012; //今年是2014年
? ? //補(bǔ)全一下代碼
? ? if(year%4)
{
? ? ? ? printf("今年是平年");
? ? }
? ? else{
? ? ? ? printf("今年是閏年"); ? ?
? ? }
? ? ? ??
? ??
? ? return 0;
}
這段代碼只取余4,也沒有寫出取余4之后的結(jié)果,也沒有加那些%d\n,為什么也能得到正確結(jié)果
2016-07-10
第二段
if(year%4)//year%4這個(gè)表達(dá)式的值為0,在C語言里就認(rèn)為是假,執(zhí)行else語句。相當(dāng)于if(0)
2016-07-10
我也是才學(xué)噠,不過可以幫你稍微解答一下。像你說的,你的第一段代碼,你假設(shè)能被4整除的年份就是閏年,這個(gè)條件的意思是年份可以被4整除并且余數(shù)是0,所以判斷條件應(yīng)該是if(year%4==0),并且前面沒必要再進(jìn)行year=year/4因?yàn)檫@個(gè)是賦值語句(需要?jiǎng)h除),你這樣做會(huì)改變年份,其他代碼正常。然后第二段代碼,本來按你后面編排的語句if的判斷語句應(yīng)該是if(year%4!=0),但是你這樣做的結(jié)果卻是對(duì)的是因?yàn)椋琲f()else的判斷方式是如果“()”內(nèi)的值是真(1)輸出"今年是平年",若是假(0)輸出"今年是閏年",然后year%4的值等于0是假,所以輸出"今年是閏年"。
PS:閏年的判斷方式不是簡(jiǎn)單的年份被4整除,而是if(year%4==0&&year%100!=0||year%400==0)