問題描述 :
請你程式設計畫一個放大的’X’。
如2*2的’X’應如下所示:
XX
XX
5*5的’X’如下所示:
X X
X X
X
X X
X X
輸入說明 :
輸入資料第一行是一個整數T,表示有T組測試資料;
接下來有T行,每行有一個正數n(2 <= n <= 80),表示放大的規格。
輸出說明 :
對于每一個n列印一個規格為n * n放大的’X’;每組輸出後面空一行。
注意:每一行輸出的字元X為大寫的'X',第一行的最前與最後都無空格,每行的最後都無空格。
輸入範例 :
3
2
5
8
輸出範例 :
XX
XX
X X
X X
X
X X
X X
X X
X X
X X
XX
XX
X X
X X
X X
#include <stdio.h>
int main() {
int n,i,m,j,k,p,temp,a;
scanf("%d",&n);
for(i=0;i<n;i++) {
scanf("%d",&m);
if(m==2) {
printf("XX\n");
printf("XX\n");
printf("\n");
} else {
temp = m;
for(j=0;j<=(m-1)/2;j++) {
for(k=0;k<j;k++)
printf(" ");
printf("X");
for(k=temp-2;k>0;k--) {
//printf("%d",j);
printf(" ");
}
temp = temp-2;
if(j != m/2)
printf("X\n");
}
if(m%2!=0) {
printf("\n");
temp=m/2;
a = 1;
for(j=0;j<(m-1)/2;j++) {
for(k=temp-1;k>0;k--) {
printf(" ");
}
printf("X");
for(k=0;k<a;k++) {
printf(" ");
}
a = a+2;
printf("X\n");
temp = temp-1;
}
} else if(m%2==0) {
temp=m/2;
a = 0;
for(j=0;j<m/2;j++) {
for(k=temp-1;k>0;k--) {
printf(" ");
}
printf("X");
for(k=0;k<a;k++) {
printf(" ");
}
a = a+2;
printf("X\n");
temp = temp-1;
}
}
printf("\n");
}
}
return 0;
}
方法有點複雜,如有更好方法,歡迎評論指教。