1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言程序输出数字图形 C语言数组应用之图形数字的输出

c语言程序输出数字图形 C语言数组应用之图形数字的输出

时间:2024-03-04 03:22:59

相关推荐

c语言程序输出数字图形 C语言数组应用之图形数字的输出

C语言数组应用之图形数字的输出

今天做《C语言程序设计——现代方法》的习题,发现数组这块有一道有意思的图形数字的题目。特此记载。

程序效果如下:

首先,程序使用一个MAX_DIGITS的宏来控制最多输出的数字。若数字输出个数多于该宏,将被忽略。除数字外的其他字符将被忽略。

使用segments函数存储图形数字的相应信息。数字被分为7个部分,编号如下:

所以segments数组为二维数组,10行7列,分别保存0~9这10个数字的对应位置的图形。其中,横线使用1表示,竖线使用2表示,空白使用0表示。

digits数组则是一个3行MAX_DIGITS*4列的数组(乘以4是因为要在两个数字之间插入空格,所以是4而不是3)。用以存储用户输入的字母信息。

clear_digits_array(void)函数用以初始化digits数组。process_digit(intdigit,intposition)函数用以将数字digit存入相应的位置。print_didgits_array(void)函数用以打印digits数组。

源程序如下:

/**************************************************

* DigitsNumber.c *

* Input numbers and print them in digit type. *

* by Eric Brown *

**************************************************/

#include

#include

#define MAX_DIGITS 10

void clear_digits_array(void);

void process_digit(int digit, int position);

void print_digits_array(void);

int segments[10][7] = {{2,1,1,0,1,1,2},{0,0,1,0,0,1,0},{2,0,1,2,1,0,2},

{2,0,1,2,0,1,2},{0,1,1,2,0,1,0},{2,1,0,2,0,1,2},

{2,1,0,2,1,1,2},{2,0,1,0,0,1,0},{2,1,1,2,1,1,2},

{2,1,1,2,0,1,2}};

int digits[3][MAX_DIGITS * 4];

int main()

{

int i;

char num;

printf("Enter a number: ");

clear_digits_array();

for(i = 0; i < MAX_DIGITS;)

{

num = getchar();

switch(num)

{

case '0': process_digit(0, i); i++; break;

case '1': process_digit(1, i); i++; break;

case '2': process_digit(2, i); i++; break;

case '3': process_digit(3, i); i++; break;

case '4': process_digit(4, i); i++; break;

case '5': process_digit(5, i); i++; break;

case '6': process_digit(6, i); i++; break;

case '7': process_digit(7, i); i++; break;

case '8': process_digit(8, i); i++; break;

case '9': process_digit(9, i); i++; break;

case '\n': i = MAX_DIGITS; break;

}

}

print_digits_array();

system("pause");

return 0;

}

/**************************************************

*clear_digits_array:initialize the digits *

* array. *

**************************************************/

void clear_digits_array(void)

{

int i, j;

for(i = 0; i < 3; i++)

for(j = 0; j < MAX_DIGITS * 4; j++)

{

digits[i][j] = 0;

}

}

/**************************************************

*process_digit:process the number's segment in *

* digit array in proper position. *

**************************************************/

void process_digit(int digit, int position)

{

int i = position * 4;

digits[0][i + 1] = segments[digit][0];

digits[1][i] = segments[digit][1];

digits[1][i + 2] = segments[digit][2];

digits[1][i + 1] = segments[digit][3];

digits[2][i] = segments[digit][4];

digits[2][i + 2] = segments[digit][5];

digits[2][i + 1] = segments[digit][6];

}

/**************************************************

* print_digits_array: to print the numbers in *

* digit way. *

**************************************************/

void print_digits_array(void)

{

int i, j;

for(i = 0; i < 3; i++)

{

for(j = 0; j < MAX_DIGITS * 4; j++)

{

if(digits[i][j] == 0)

printf(" ");

else if(digits[i][j] == 1)

printf("|");

else if(digits[i][j] == 2)

printf("_");

}

printf("\n");

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。