天天看點

東華大學2020計算機考研複試oj上機題

問題描述 :

請你程式設計畫一個放大的’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

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;
}
           

方法有點複雜,如有更好方法,歡迎評論指教。

繼續閱讀