1. 程式人生 > >第九屆藍橋杯省賽JAVA語言 C組題解_題6 列印大X

第九屆藍橋杯省賽JAVA語言 C組題解_題6 列印大X

JAVA語言 C組題解_題6 列印大X

題目

標題:列印大X

如下的程式目的是在控制檯列印輸出大X。
可以控制兩個引數:圖形的高度,以及筆寬。

用程式中的測試資料輸出效果:
(如果顯示有問題,可以參看p1.png)

高度=15, 筆寬=3





***   ***
 *** ***
  *****
   ***
  *****
 *** ***
***   ***




高度=8, 筆寬=5









請仔細分析程式流程,填寫缺失的程式碼。

public class A
{
static void f(int h, int w){
System.out.println(String.format(“高度=%d, 筆寬=%d”,h,w));
int a1 = 0;
int a2 = h - 1;

	for(int k=0; k<h; k++){
		int p = Math.min(a1,a2);
		int q = Math.max(a1+w,a2+w);
		
		for(int i=0; i<p; i++) System.out.print(" ");
		
		if(q-p<w*2){
			____________________________________________ ; //填空
		}
		else{
			for(int i=0; i<w; i++) System.out.print("*");
			for(int i=0; i<q-p-w*2; i++) System.out.print(" ");
			for(int i=0; i<w; i++) System.out.print("*");
		}
		System.out.println();
		a1++;
		a2--;
	}
}

public static void main(String[] args){
	f(15,3);
	f(8,5);
}

}

注意:只填寫缺失的程式碼,不要拷貝已經存在的程式碼。

解題思路

1、 一般我們遇到這種題的解題思路就是分解法分解成上下兩個圖形來進行輸出。所以看到p,和q難免會有點懵不知道如何下手。這裡的p和q只是兩個變數將以前我們需要分兩部列印的圖形變成一步。p,q達到一定值後p,q值反轉。這裡就可以給大家分享一個做圖形列印填空題的小技巧。直接將程式碼複製的到eclipse.exe 中看他缺失的部分。這樣就可惜很清晰明瞭的發現我們需要填寫部分程式碼需要實現的功能。
答案:for(int i=0; i<q-p; i++) System.out.print("*"); //填空

//java程式碼
static void f(int h, int w){ System.out.println(String.format("高度=%d, 筆寬=%d",h,w)); int a1 = 0; int a2 = h - 1; for(int k=0; k<h; k++){ int p = Math.min(a1,a2); int q = Math.max(a1+w,a2+w); for(int i=0; i<p; i++) System.out.print(" ");//列印空格 if(q-p<w*2){//q-p<w*2中間無空格只需列印*號 for(int i=0; i<q-p; i++) System.out.print("*"); //填空 } else{ for(int i=0; i<w; i++) System.out.print("*");//列印左邊*號 for(int i=0; i<q-p-w*2; i++) System.out.print(" ");//列印中間空格 for(int i=0; i<w; i++) System.out.print("*");//列印右邊*號 } System.out.println(); a1++; a2--; } } public static void main(String[] args){ f(15,3); f(8,5); } ```