# c135. 00706 - LC-Display 垃圾詳解 [本題ZeroJudge連結](https://zerojudge.tw/ShowProblem?problemid=c135) ### 解釋: 輸入一串數字n後,轉換為粗細大小為s單位的LCD風格字體,字體樣式詳見範例測資輸出。本題為多筆輸入,直到n=0, s=0時結束,本題測試資料有誤,不要被誤導了! 底下範例我不小心變數名稱設反了,請見諒zz ### 想法: 此題不難,只要想好數字哪些橫線需要繪製、哪些不用,並注意空格數以及線條輸出次數即可。 ### C++ 範例: ```cpp= #include<bits/stdc++.h> using namespace std; int main(){ int n; string s; while (true) { cin >> n >> s; if (n == 0) break; // n==0時 break // 第一排 // 第一格為空 cout << " "; for (int i=0; i<s.length(); i++) { int a = s[i] - '0'; // 將字串一位轉成數字 if (a != 1 && a != 4) { for (int j=0; j<n; j++) cout << "-"; } else { for (int j=0; j<n; j++) cout << " "; } // 畫完一橫後 空三格 // 第一格為自己的最後一格 第二格是兩個數字間的空格 第三格為下一數字的第一個空格 cout << " "; } cout << '\n'; // 上半部 // 總共畫n行 for (int k=0; k<n; k++) { for (int i=0; i<s.length(); i++) { int a = s[i] - '0'; if ( a == 0 || a == 4 || a == 8 || a == 9 ) { // 兩邊都有直線 cout << "|"; for (int j=0; j<n; j++) cout << " "; cout << "|"; } else if ( a == 1 || a == 2 || a == 3 || a == 7 ){ // 只有右邊有直線 for (int j=0; j<n+1; j++) cout << " "; cout << "|"; } else { // 只有左邊有直線 cout << "|"; for (int j=0; j<n+1; j++) cout << " "; } cout << " "; } cout << '\n'; } // 中間橫線 // 橫線需空一格再開始 cout << " "; for (int i=0; i<s.length(); i++) { int a = s[i] - '0'; if (a != 0 && a != 1 && a != 7) { for (int j=0; j<n; j++) cout << "-"; } else { for (int j=0; j<n; j++) cout << " "; } // 一樣空三格 cout << " "; } cout << '\n'; // 下半部 for (int k=0; k<n; k++) { for (int i=0; i<s.length(); i++) { int a = s[i] - '0'; if ( a == 0 || a == 6 || a == 8 ) { cout << "|"; for (int j=0; j<n; j++) cout << " "; cout << "|"; } else if ( a == 1 || a == 3 || a == 4 || a == 5 || a == 7 || a == 9 ){ for (int j=0; j<n+1; j++) cout << " "; cout << "|"; } else { cout << "|"; for (int j=0; j<n+1; j++) cout << " "; } cout << " "; } cout << '\n'; } // 下方橫線 // 一樣先空一格 cout << " "; for (int i=0; i<s.length(); i++) { int a = s[i] - '0'; if (a != 1 && a != 4 && a != 7) { for (int j=0; j<n; j++) cout << "-"; } else { for (int j=0; j<n; j++) cout << " "; } cout << " "; } cout << "\n\n"; // 換下一組測資多空一行 } } ``` * 這不是一個好解,明明一堆重複的可以寫函式、、 * 不過,歡迎提供更好的解答喔!! Python 也可以提供喔。