# include <iostream>
using namespace std;
int a,b,c,d,t;
int main()
{
cin>>t;
while(t-->=0&&t--<=20)
{
cin >> a >> b >> c >> d;
if((c-b)==(d-c))
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<d+(b-a)<<endl;
else
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<(b/a)*d<<endl;
}
}
你在 while 迴圈的判斷式 (t-->=0&&t--<=20) 中,
其中每次判斷都會執行 t-- 2次,
所以每一次判斷完之後其 t 的數值會被 -2 而非 -1 ,
由於 t 是減少的且題目保證一開始 t 必定 <= 20 ,
所以 t--<=20 的部分就不需要留著了~~~
另外,
由於 後綴--運算子 回傳的數值是更改之前的數值, (若一開始 t=20, 則第一次 t-- 會回傳 20 , 雖然 t 已經變成 19 了)
所以當 t-- 回傳 0 時就應該要跳出迴圈, (從 20→0 是執行 21 次, 從 20→1 才會是執行 20 次)
故 t-->=0 應該要改成 t-->0 或 t--!=0 才會是對的~~~
不過對 int 而言 0 本身就代表 false , (其它數值則是 true )
所以實際上判斷是直接寫 t-- 就 OK 了,
因為我們是希望當 t-- 回傳 0 時就要跳出迴圈,
但 0 本身就可以直接代表 false 來中斷迴圈,
所以實際上直接寫 while(t--) 就 OK 了~~~
以上希望有幫助到你~~~ OwO
$\color{white}{\small a^2+b^2 test}$