問題描述:寫一程式依據輸入印出圖形. 當輸入 3 時,印出 123 12 1 12 123 當輸入 4 時,印出 1234 123 12 1 12 123 1234 【解題步驟一】 分析問題,大方向思考。 當 n=3 時,必須輸出 5 列, 當 n=4 時,必須輸出 7 列, 所以列數為 2n-1 . int x,y,n,t; n=3; for(x=1 ; x<=2*n-1 ; x++){ printf("%d\n",x); } 【解題步驟二】 思考每一列的字元數與輸出的列值有何關聯?
考慮下列一維座標的範圍轉換 若 x 為列值,則 x = -(n-1) 至 n-1, 可以將列值轉成字元數。
思考如何將 -2、-1、0、1、2 轉換成 每一列的字元數 3、2、1、2、3 如下表格為正解
int x,y,n,t; n=3; for(x=-(n-1) ; x<=n-1 ; x++){ t=abs(x)+1; printf("%d\n",t); } 使用 abs() 絕對值函數必須 #include <math.h> 當 x 所表達的值為每一列的字元數以後, 就可以使用重複結構輸出字元。 int x,y,n,t; n=3; for(x=-(n-1) ; x<=n-1 ; x++){ t=abs(x)+1; for(y=1;y<=t;y++){ printf("%d",y); } printf("\n"); } 【解題步驟三】 修改 n 值輸入方式並重複測試 int x,y,n,t; printf("Input the n : ");scanf("%d",&n); for(x=-(n-1) ; x<=n-1 ; x++){ t=abs(x)+1; for(y=1;y<=t;y++){ printf("%d",y); } printf("\n"); } 【類似範例練習】
|