#include<iostream>
using namespace std;
int main(){
int t, a[3];
cin >> t ;
while(t>0){
for (int i=0; i<=3; i++)
cin >> a[i];
if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){
for(int i=0; i<=3; i++)
cout << a[i] << " ";
cout << (a[2]/a[1])*a[3] << endl;
}
else {
for(int i=0; i<=3; i++)
cout << a[i] << " ";
cout << (a[2]-a[1])+a[3] << endl;
}
t-=1;
}
}
輸入題目給的數字
等差數列沒有問題,但是等比數列一直跑出1 2 4 8 10
就算我隱藏輸出等比數列的最後一個數字那行程式碼
那個10還是會跑出來...
if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){
判斷式的串聯,C/C++ 的行為,跟數學和 Python 表現不同
2 == 2 == 2
在數學和 Python 會是肯定的
但在 C/C++ 會是 (2 == 2) == 2
→ true == 2
→ false
建議你寫成 (a[1]/a[0])==(a[2]/a[1]) && (a[2]/a[1])==(a[3]/a[2])
希望我這個凡人,能解答你的問題
if((a[1]/a[0])==(a[2]/a[1])==(a[3]/a[2])){判斷式的串聯,C/C++ 的行為,跟數學和 Python 表現不同
2 == 2 == 2
在數學和 Python 會是肯定的
但在 C/C++ 會是(2 == 2) == 2
→true == 2
→false
建議你寫成
(a[1]/a[0])==(a[2]/a[1]) && (a[2]/a[1])==(a[3]/a[2])
希望我這個凡人,能解答你的問題
非常感謝您的解惑!!!