编写程序,提示用户输入一个数并显示该数,使用字符模拟七段显示器的效果:
Enter a number: 491-9014
非数字的字符都将被忽略。在程序中用一个名为MAX_DIGITS的宏来控制数的最大位数,MAX_DIG- ITS的值为10。如果数中包含的数位大于这个数,多出来的数位将被忽略。提示:使用两个外部数组,一个是segments数组(见第8章的练习题6),用于存储表示数字和段之间对应关系的数据;另一个是digits数组,这是一个3行(因为显示出来的每个数字高度都是3个字符)、MAX_DIGITS×4列(数字的宽度是3个字符,但为了可读性需要在数字之间增加一个空格)的字符数组。编写4个函数:main、clear_digits_array、process_digit和print_digits_array。下面是后3个函数的原型:void clear_digits_array(void); void process_digit(int digit, int position); void print_digits_array(void);
clear_digits_array函数在digits数组的所有元素中存储空白字符。process_digit函数把digit的七段表示存储到digits数组的指定位置(位置从0到MAX_DIGITS 1)。print_digits_ array函数分行显示digits数组的每一行,产生出像示例图那样的输出。
编写程序,提示用户输入一个数并显示该数,使用字符模拟七段显示器的效果
答案:2 悬赏:0 手机版
解决时间 2021-02-15 17:24
- 提问者网友:记得曾经
- 2021-02-14 19:31
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-02-14 19:39
#include
#include
#define max_dights 10
const int segments[10][7] = {
{1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1},
{1, 1, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1},
{1, 0, 1, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}
};
char dights[3][max_dights * 4];
void clear_dight_array(void);
void process_dights_array(int dight, int position);
void print_dights_array(void);
int main(void) {
unsigned char numbers[max_dights];
int ch, i = 0, j;
clear_dight_array();
printf("enter a number: ");
while ((ch = getchar()) != eof && ch != '\n')
if (i < max_dights && ch >= '0' && ch <= '9')
process_dights_array(ch - '0', i++);
print_dights_array();
return 0;
}
void clear_dight_array(void) {
memset(dights, ' ', sizeof dights);
}
void process_dights_array(int dight, int position) {
int n = position * 4;
if (segments[dight][0])
dights[0][n + 1] = '_';
if (segments[dight][1])
dights[1][n + 2] = '|';
if (segments[dight][2])
dights[2][n + 2] = '|';
if (segments[dight][3])
dights[2][n + 1] = '_';
if (segments[dight][4])
dights[2][n] = '|';
if (segments[dight][5])
dights[1][n] = '|';
if (segments[dight][6])
dights[1][n + 1] = '_';
}
void print_dights_array(void) {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < max_dights * 4; j++) {
putchar(dights[i][j]);
}
putchar('\n');
}
}
#include
#define max_dights 10
const int segments[10][7] = {
{1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1},
{1, 1, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1},
{1, 0, 1, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}
};
char dights[3][max_dights * 4];
void clear_dight_array(void);
void process_dights_array(int dight, int position);
void print_dights_array(void);
int main(void) {
unsigned char numbers[max_dights];
int ch, i = 0, j;
clear_dight_array();
printf("enter a number: ");
while ((ch = getchar()) != eof && ch != '\n')
if (i < max_dights && ch >= '0' && ch <= '9')
process_dights_array(ch - '0', i++);
print_dights_array();
return 0;
}
void clear_dight_array(void) {
memset(dights, ' ', sizeof dights);
}
void process_dights_array(int dight, int position) {
int n = position * 4;
if (segments[dight][0])
dights[0][n + 1] = '_';
if (segments[dight][1])
dights[1][n + 2] = '|';
if (segments[dight][2])
dights[2][n + 2] = '|';
if (segments[dight][3])
dights[2][n + 1] = '_';
if (segments[dight][4])
dights[2][n] = '|';
if (segments[dight][5])
dights[1][n] = '|';
if (segments[dight][6])
dights[1][n + 1] = '_';
}
void print_dights_array(void) {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < max_dights * 4; j++) {
putchar(dights[i][j]);
}
putchar('\n');
}
}
全部回答
- 1楼网友:鱼芗
- 2021-02-14 20:33
#include<stdio.h>
#include<stdbool.h>
#defineMAX_DIGHTS 10
boolsegments[10][7]= {{true,true,true,false,true,true,true},
{false,false,false,false,true,true,false},
{true,false,true,true,true,false,true},
{true,false,false,true,true,true,true},
{false,true,false,true,true,true,false},
{true,true,false,true,false,true,true},
{true,true,true,true,false,true,true},
{true,false,false,false,true,true,false},
{true,true,true,true,true,true,true},
{true,true,false,true,true,true,true}};
chardigits[3][4*MAX_DIGHTS];
voidclear_digits_array(void);
intprocess_digit(int digit,int position);
voidprint_digits_array(int position);
intmain(int argc, char *argv[])
{
int position=0,digit;
char ch;
clear_digits_array();
printf("Enter a number:");
do{
ch=getchar();
if(ch>='0'&&ch<='9'){
digit=(int)(ch-'0');
position=process_digit(digit,position);
}
}while(ch!='\n');
print_digits_array(position);
return 0;
}
voidclear_digits_array(void)
{
int i,j;
for(i=0; i<3; i++)
for(j=0; j<4*MAX_DIGHTS; j++)
digits[i][j]=' ';
}
intprocess_digit(int digit,int position)
{
int j;
for(j=0; j<7; j++){
if(segments[digit][j]==true){
if(j%3==0)
digits[j/3][1+position*4]='_';
if(j%3!=0)
digits[j%3][((j/3>0)?2:0)+position*4]='|';
}
}
return ++position;
}
voidprint_digits_array(int position)
{
int i, j;
for (i = 0; i < 3; i++){
for (j = 0; j < position * 4; j++)
putchar(digits[i][j]);
putchar('\n');
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯