所以我的問題在於我相信我的process_digit函數。我不認爲通過1和0的每次迭代正確索引的情況,所以當我輸入一個像4這樣的輸入時,我得到的輸出不正確。我不確定案件 陳述是倒退或發生了什麼,但基本上我認爲他們是不正確的。在C中使用printf和多維數組的7段顯示
//input is 1 2 3 4 5 6 7 8 9 0
//output should be _ _ _ _ _ _ _ _
// | _| _| |_| |_ |_ | |_| |_| | |
// | |_ _| | _| |_| | |_| | |_|
//output is _ _ _ _ _ _ _ _
// | _| _| |_| |_ |_ | |_| |_| ||
// | |_ _| | _| |_| | |_| _| |_|
//
#include <stdio.h>
#define MAX_DIGITS 10
void clear_digits_array(void);
void process_digit(int digit, int position);
void print_digits_array(void);
char digits[3][MAX_DIGITS*4];
const int array[MAX_DIGITS][7]={{1,1,1,0,1,1,1},{0,0,1,0,0,1,0},{1,0,1,1,1,0,1},{1,0,1,1,0,1,1},{0,1,1,1,0,1,0},{1,1,0,1,0,1,1},{1,1,0,1,1,1,1},{1,0,1,0,0,1,0},{1,1,1,1,1,1,1},{1,1,1,1,0,1,1},};
void clear_digits_array(void){
int j=0,i=0;
for(i=0;i<3;i++){
for(j=0;j<MAX_DIGITS*4;j++){
digits[i][j]='\0';
}
}
}
void process_digit(int digit, int position){
int i=0;
for(i=0;i<7;i++){
if(array[digit][i]==1){
switch(i){
case 0: digits[0][1+position*4]='_';
break;
case 1: digits[1][0+position*4]='|';
break;
case 2: digits[1][2+position*4]='|';
break;
case 3: digits[1][1+position*4]='_';
break;
case 4: digits[2][0+position*4]='|';
break;
case 5: digits[2][2+position*4]='|';
break;
case 6: digits[2][1+position*4]='_';
break;
}
}
}
}
void print_digits_array(void){
int a=0,b=0;
printf(" ");
for(a=0;a<3;a++){
printf(" ");
for(b=0;b<MAX_DIGITS*4;b++)
printf("%c",digits[a][b]);
printf(" ");
}
printf(" ");
}
int main(void) {
char character_number='\0';
int a=0;
clear_digits_array();
printf("Enter a number:");
while ((character_number=getchar())!='\n') {
int number=MAX_DIGITS;
switch(character_number){
case '0': number=0;
break;
case '1': number=1;
break;
case '2': number=2;
break;
case '3': number=3;
break;
case '4': number=4;
break;
case '5': number=5;
break;
case '6': number=6;
break;
case '7': number=7;
break;
case '8': number=8;
break;
case '9': number=9;
break;
default: printf("%c ignored", character_number);
}
if(a==0){
process_digit(number,a);
a++;
}
}
print_digits_array();
return 0;
}
好吧,我editted上面的程序,以顯示我得到確切的輸出。我不確定我將如何實現你的想法,因爲每個標記都存儲在一個int數組中,並在最後打印出來。 – Senglish
一個簡單的方法是用空格而不是空字符('\ 0')初始化'digits'數組。我會編輯我的答案,告訴你如何。 – mescarra