PAT乙級,1012,數字分類
阿新 • • 發佈:2018-11-01
還是有點問題,但是思路應該是對的。
1.分析題目,是5種情況分別是被5除後餘0,1,2,3,4,所以想到用switch語句,在多個固定選項中做出選擇。
2.建立一個vector,用於儲存輸入的數字
3.再遍歷整個vector,用for迴圈;當中每一個數字都是檢測是否是5種情況中的一種。
4.最後輸出的時候判斷是否為空
case標籤必須是整形常量表達式(case 0,這個0就是標籤);
iomanip是setprecision的標頭檔案,用來設定精度;
#include<iostream> #include<string> #include<vector> #include<iomanip> using namespace std; int main() { vector<int> v; int a, a1=0, a2=0, a3=0, a4=0, a5=0, count=0; char c; int flag=1; while(cin >> a) //儲存輸入 { v.push_back(a); if((c=getchar())=='\n') break; } for(int i=0;i<v.size();i++) { int rem = v[i]%5; switch(rem) { case 0: if(v[i]%2 == 0) a1 += v[i]; break; case 1: a2 += v[i]*flag; flag *= -1; break; case 2: a3++; break; case 3: a4 += v[i]; count++; break; case 4: if(v[i]>a5) a5 = v[i]; else break; } } if(a1 == 0) cout << "N" << " "; else cout << a1 << " "; if(a2 == 0) cout << "N" << " "; else cout << a2 << " "; if(a3 == 0) cout << "N" << " "; else cout << a3 << " "; if(a4 == 0) cout << "N" << " "; else cout << setprecision(1) << a4/count << " "; if(a5 == 0) cout << "N"; else cout << a5; return 0; }