2019寒假作業一:PTA7-1 打印沙漏


7-1 打印沙漏 (20 分)
本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。

給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉盡可能多的符號。

輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。

輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。

輸入樣例:
19 *
輸出樣例:
*****
 ***
  *
 ***
*****
2
#include <stdio.h>
int main()
{
    int N,count,a,i,j,m,l=0,r;
    char c;
    scanf("%d %c", &N, &c);
while(2*count*count-1<=N){
a++;
}
r = a; for (i = 0; i < count; i++) { for (j = 0; j < l; j++) printf(" "); for (m = l; m < r; m++) printf("%c", c); l = l+1; r =r-1; printf("\n"); } l = l-1; r =r+1; for (i = 1; i < count; i++) { l = l-1; r = r+1; for (j = 0; j < l; j++) printf(" "); for (m = l; m < rt; m++) printf("%c", c); printf("\n"); } printf("%d\n", N-2*count*count+1); return 0; }

2)設計思路

第一步:先觀察這個沙漏成什么形狀,可以發現這個沙漏成一個上倒三角和一個下三角,從中我們可以發現一些數學規律。第三行是有第一行是有五個符號,第二行是有三個符號,第三行是有一個符號,第四行是有三個符號,第五個是有五個符號。這些標志着我們可以用數學等差公式來計算。

第二步:把數學公式用代碼來表示。先把沙漏分為上倒三角和下三角兩部分來計算,再使用for語句嵌套循環。

第三步:運算,輸出結果。

3)本題調試過程中遇到的問題

 

剛開始我在dev-c++中做了了幾次還是沒做對,主要是解題思路還不是太順,總是有一些問題沒解決,for語句嵌套循環的使用我也有一些不懂,最后從網上向別人請教了一下才是寫完了這道題目。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM