這個題目的難點在於怎麼想辦法讓圖形和數字建立映射關係,剛開始做這個題目的時候想着將0到9這十個數字的每一個數字映射到一個模型.可是試了一下,感覺不行
因爲題目要輸出的不是僅僅一個數字,而是一行數字,並且是可伸縮的. 所以要想其它的辦法. 觀察 這些電子鐘數字的特點 其實一共有7個筆畫組成 將他們分別定義成7個部分
每一筆畫有哪些數字包含了就將他們記錄下來. 這樣從1 到7 就將這7個筆畫都記錄下來了.這樣一次輸出一行 移動有5行需要輸出 程序如下
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main() {
int s;
char num[9];
int i,j;
int emp;
char b1[11]={'-',' ','-','-',' ','-','-','-','-','-'};
char b2[11]={'|','|',' ',' ','|','|','|',' ','|','|'};
char b3[11]={'|',' ','|','|','|',' ',' ','|','|','|'};
char b4[11]={' ',' ','-','-','-','-','-',' ','-','-'};
char b5[11]={'|','|','|',' ',' ',' ','|',' ','|',' '};
char b6[11]={'|',' ',' ','|','|','|','|','|','|','|'};
char b7[11]={'-',' ','-','-',' ','-','-',' ','-','-'};
while(1) {
memset(num,0,9);
scanf("%d %s",&s,num);
if(s==0) break;
for(i=0;i<strlen(num);i++) {
printf(" ");
for(j=0;j<s;j++)
printf("%c",b1[num[i]-'0']);
printf(" ");
}
printf("\n");
for(j=0;j<s;j++) {
for(i=0;i<strlen(num);i++) {
printf("%c",b2[num[i]-'0']);
for(emp=0;emp<s;emp++)
printf(" ");
printf("%c",b3[num[i]-'0']);
printf(" ");
}
printf("\n");
}
for(i=0;i<strlen(num);i++) {
printf(" ");
for(j=0;j<s;j++)
printf("%c",b4[num[i]-'0']);
printf(" ");
}
printf("\n");
for(j=0;j<s;j++) {
for(i=0;i<strlen(num);i++) {
printf("%c",b5[num[i]-'0']);
for(emp=0;emp<s;emp++) printf(" ");
printf("%c",b6[num[i]-'0']);
printf(" ");
}
printf("\n");
}
for(i=0;i<strlen(num);i++) {
printf(" ");
for(j=0;j<s;j++)
printf("%c",b7[num[i]-'0']);
printf(" ");
}
printf("\n");
}
}