1. 程式人生 > >西郵oj1068

西郵oj1068

題目:

在這裡插入圖片描述

首先奉上答案:

#include<stdio.h>
int main(){
 char shuzi[11][4][4]={
  {{' ','_',' '},{'|',' ','|'},{'|','_','|'}},
  {{' ',' ',' '},{' ',' ','|'},{' ',' ','|'}},
  {{' ','_',' '},{' ','_','|'},{'|','_',' '}},
  {{' ','_',' '},{' ','_','|'},{' ','_','|'}},
  {{' ',' ',' '},{'|','_','|'},{' ',' ','|'}},
  {{' ','_',' '},{'|','_',' '},{' ','_','|'}},
  {{' ','_',' '},{'|','_',' '},{'|','_','|'}},
  {{' ','_',' '},{' ',' ','|'},{' ',' ','|'}},
  {{' ','_',' '},{'|','_','|'},{'|','_','|'}},
  {{' ','_',' '},{'|','_','|'},{' ','_','|'}},
 };
 int n[5];
 while(scanf("%d%d%d%d",&n[0],&n[1],&n[2],&n[3])!=EOF){
  for(int j=0;j<3;j++){
   for(int k=0;k<4;k++){
     printf("%s",shuzi[n[k]][j]);
   }
   printf("\n");
  }
 }
 return 0;
}

此答案思路:

其實剛開始看到要列印3x3的字元時,立即想到的是定義0~9十個二維字元組即矩陣。 這裡提醒新手同學一點:有人看到3x3直接定義"變數名 [3][3]"的變數,這是錯誤的。因為字串末尾還有’\0’結束符,所以3x3個位元組是不夠的。言歸正傳繼續思路敘述。當我定義了十個二維字元組時,發現0~9十個變數取用等很不方便,於是,我定義了一個三維字元組shuzi[11][4][4],直接對他初始化。 這裡shuzi[p][m][l]裡的p為幾時就是數字幾對應的3x3二維字元組,之後我又定義了陣列n[5]來儲存使用者輸入的四個數字然後輸出shuzi[n[i]]這裡沒有移動游標所以首先列印的是字元組[n[0]],[n[1]],[n[2]],[n[3]]的第一行然後再列印第二第三行。

這裡還有一個小技巧,因為這是字元組有專門的佔位符’%s’。所以我只用了兩層迴圈,而並沒有像多維陣列一樣三層迴圈逐個列印。

編寫不易,求轉發推薦,謝謝!!!