
c语言输出图形
封条格式范本-奥莉薇绘本
2023年2月20日发(作者:阿孜)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*
*Inputnumbersandprintthemindigittype.*
*byEricBrown*
**************************************************/
#include
#include
#defineMAX_DIGITS10
voidclear_digits_array(void);
voidprocess_digit(intdigit,intposition);
voidprint_digits_array(void);
intsegments[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}};
intdigits[3][MAX_DIGITS*4];
intmain()
{
inti;
charnum;
printf("Enteranumber:");
clear_digits_array();
for(i=0;i { 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"); return0; } /************************************************** *clear_digits_array:initializethedigits* *array.* **************************************************/ voidclear_digits_array(void) { inti,j; for(i=0;i<3;i++) for(j=0;j { digits[i][j]=0; } } /************************************************** *process_digit:processthenumber'ssegmentin* *digitarrayinproperposition.* **************************************************/ voidprocess_digit(intdigit,intposition) { inti=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:toprintthenumbersin* *digitway.* **************************************************/ voidprint_digits_array(void) { inti,j; for(i=0;i<3;i++) { for(j=0;j { if(digits[i][j]==0) printf(""); elseif(digits[i][j]==1) printf("|"); elseif(digits[i][j]==2) printf("_"); } printf("n"); } }