PTA 自測題 列印沙漏
阿新 • • 發佈:2020-07-15
------------恢復內容開始------------
題目:
本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉儘可能多的符號。
格式錯誤原因:輸出右邊沒有空格。
輸出錯誤原因:如果你的程式可以正常輸出“沙漏”,要注意當沒用掉的符號數為0時,也要輸出,輸出為0。
#include <iostream> #include <cmath> using namespace std; int main() { int n; char c; cin >> n >> c; if(n<7) { cout << c << "\n"; cout << n-1; } else { int temp = sqrt((n-1)/2); int num = 2*temp - 1; int copy = num; for(int i = num;i>0;i--) { int q = 0; if(copy<=num/2) q = copy-1; else q = num-copy; int p = num - 2*q; for(int j = num;j>0;j--) { if(q>0) { cout << " "; q = q - 1; } if(q==0&&p>0) { cout << c; p = p - 1; } } cout << "\n"; copy = copy - 1; } cout << n - 2*temp*temp + 1 << endl; } return 0; }