#29505: C++寫法疑問


jasonf0410 (冠貓幫只洗頻不吵架)

學校 : 國立嘉義大學
編號 : 185729
來源 : [42.77.113.171]
最後登入時間 :
2022-12-11 16:47:11
a004. 文文的求婚 | From: [220.143.26.225] | 發表日期 : 2022-03-08 00:33

 

#include<iostream>

using namespace std;

int main()

{

while(1)

{

int year;

cin>>year;

if(year%4==0 && year%100!=0 || year%400==0)

{

cout<<"閏年"<<endl;

}

else

{

cout<<"平年"<<endl;

}

}

return 0;

}

//////////

 

 

#include<iostream>

using namespace std;

int main()

{

int year;

while(cin>>year)

{

if(year%4==0 && year%100!=0 || year%400==0)

{

cout<<"閏年"<<endl;

}

else

{

cout<<"平年"<<endl;

}

}

return 0;

}

##想請問為什麼第一種寫法系統不給過,而第二種卻可以?

 
#29507: Re:C++寫法疑問


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a004. 文文的求婚 | From: [27.247.9.93] | 發表日期 : 2022-03-08 08:41

 

 

while(1)


##想請問為什麼第一種寫法系統不給過,而第二種卻可以?


因為第一種的while是無限迴圈

 
#29515: Re:C++寫法疑問


jasonf0410 (冠貓幫只洗頻不吵架)

學校 : 國立嘉義大學
編號 : 185729
來源 : [42.77.113.171]
最後登入時間 :
2022-12-11 16:47:11
a004. 文文的求婚 | From: [220.143.26.225] | 發表日期 : 2022-03-08 15:16

 

 

while(1)


##想請問為什麼第一種寫法系統不給過,而第二種卻可以?


因為第一種的while是無限迴圈


感謝大大回答,那為什麼第二種不算無限迴圈?會在什麼條件下跳出while?

 
#29517: Re:C++寫法疑問


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a004. 文文的求婚 | From: [27.247.9.93] | 發表日期 : 2022-03-08 18:14

 

 

while(1)


##想請問為什麼第一種寫法系統不給過,而第二種卻可以?


因為第一種的while是無限迴圈


感謝大大回答,那為什麼第二種不算無限迴圈?會在什麼條件下跳出while?


cin>>會回傳物件本身(https://www.cplusplus.com/reference/istream/istream/operator%3E%3E/),而判斷true或false時會呼叫operator bool (https://www.cplusplus.com/reference/ios/ios/operator_bool/),當讀取失敗時會回傳false,讀取成功會回傳true。

ZeroJudge中很多題目是多組測資,以EOF結束,第二種在讀到EOF之後就會跳出while迴圈。

 
ZeroJudge Forum