哲思想法简友广场

C语言实现数字走马灯

2020-12-10  本文已影响0人  Cache_wood

代码来自老师,仅做学习使用。

#include <stdio.h>
#include<unistd.h>
#include<Windows.h>//for windows
#define MAX_DIGITS 10
#define CLEAR "cls"//"cls" for windows

const int segments[10][7] = {
    {1, 1, 1, 1, 1, 1, 0}, // code for 0 
    {0, 1, 1, 0, 0, 0, 0}, // code for 1 
    {1, 1, 0, 1, 1, 0, 1}, // code for 2 
    {1, 1, 1, 1, 0, 0, 1}, // code for 3 
    {0, 1, 1, 0, 0, 1, 1}, // code for 4 
    {1, 0, 1, 1, 0, 1, 1}, // code for 5 
    {1, 0, 1, 1, 1, 1, 1}, // code for 6 
    {1, 1, 1, 0, 0, 0, 0}, // code for 7 
    {1, 1, 1, 1, 1, 1, 1}, // code for 8 
    {1, 1, 1, 1, 0, 1, 1}  // code for 9 
};

char digits[3][MAX_DIGITS * 4];

void clear_digits_array(void);//flush the canvas
void process_digits_array(int dight, int position);//paint
void print_digits_array(void);//print 
int display(int);//print an int 
void countdown_display(int);//countdown based on display
void calculator_add(int,int);//adder based on display

int main(void) 
{
    printf("Enter a positive integer: ");
    int n;
    scanf("%d",&n);
    if(n<=0)
    {
        printf("ERROR INPUT!\n");
        return -1;
    }
    printf("%d can be displayed as:\n",n);
    //return display(n);
    countdown_display(n);
    int m;
    printf("Enter another postive integer:");
    scanf("%d",&m);
    if(m<=0)
    {
        printf("ERROR INPUT!\n");
        return -1;
    }
    calculator_add(n,m);
}
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]=' ';
}
void process_digits_array(int digit, int position) 
{
    int n = position * 4;
    if (segments[digit][0])
        digits[0][n + 1] = '_';
    if (segments[digit][1])
        digits[1][n + 2] = '|';
    if (segments[digit][2])
        digits[2][n + 2] = '|';
    if (segments[digit][3])
        digits[2][n + 1] = '_';
    if (segments[digit][4])
        digits[2][n] = '|';
    if (segments[digit][5])
        digits[1][n] = '|';
    if (segments[digit][6])
        digits[1][n + 1] = '_';
}
void print_digits_array(void) 
{
    int i, j;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < MAX_DIGITS * 4; j++) 
        {
            printf("\033[40;31m%c\033[0m",digits[i][j]);
        }
        printf("\n");
    }
}
int display(int n)
{
    clear_digits_array();
    int nums[MAX_DIGITS];
    int k;
    for(k=0;k<MAX_DIGITS;k++)
        nums[k]=-1;
    int i=0;
    while(n>0)
    {
        int r=n%10;
        n/=10;
        nums[i++]=r;
        if(i>=MAX_DIGITS)
        {
            printf("TOO HUGE NUMBER!\n");
            return -1;
        }
    }
    int j=0;
    for(i=MAX_DIGITS-1;i>=0;i--)
    {
        if(nums[i]>=0)
        {
            process_digits_array(nums[i], j++);
        }
    }
    print_digits_array();
    return 1;
}
void countdown_display(int n)
{
    int i;
    system(CLEAR);
    for(i=n;i>0;i--)
    {
        display(i);
        sleep(1);
        system(CLEAR);
    }
}
void calculator_add(int n,int m)
{
    system(CLEAR);
    display(n);
    printf("\n+\n");
    display(m);
    printf("\n=\n");
    display(n+m);
}
#include <stdio.h>
#include<unistd.h>
#include<Windows.h>//for windows
#define MAX_DIGITS 10
#define CLEAR "cls"//"cls" for windows

const int segments[10][7] = {
    {1, 1, 1, 1, 1, 1, 0}, // code for 0 
    {0, 1, 1, 0, 0, 0, 0}, // code for 1 
    {1, 1, 0, 1, 1, 0, 1}, // code for 2 
    {1, 1, 1, 1, 0, 0, 1}, // code for 3 
    {0, 1, 1, 0, 0, 1, 1}, // code for 4 
    {1, 0, 1, 1, 0, 1, 1}, // code for 5 
    {1, 0, 1, 1, 1, 1, 1}, // code for 6 
    {1, 1, 1, 0, 0, 0, 0}, // code for 7 
    {1, 1, 1, 1, 1, 1, 1}, // code for 8 
    {1, 1, 1, 1, 0, 1, 1}  // code for 9 
};

char digits[3][MAX_DIGITS * 4];

void clear_digits_array(void);//flush the canvas
void process_digits_array(int dight, int position);//paint
void print_digits_array(void);//print 
int display(int);//print an int 
void countdown_display(int);//countdown based on display
void calculator_add(int,int);//adder based on display

int main(void) 
{
    printf("Enter a positive integer: ");
    int n;
    scanf("%d",&n);
    if(n<=0)
    {
        printf("ERROR INPUT!\n");
        return -1;
    }
    printf("%d can be displayed as:\n",n);
    //return display(n);
    countdown_display(n);
    int m;
    printf("Enter another postive integer:");
    scanf("%d",&m);
    if(m<=0)
    {
        printf("ERROR INPUT!\n");
        return -1;
    }
    calculator_add(n,m);
}
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]=' ';
}
void process_digits_array(int digit, int position) 
{
    int n = position * 4;
    if (segments[digit][0])
        digits[0][n + 1] = '_';
    if (segments[digit][1])
        digits[1][n + 2] = '|';
    if (segments[digit][2])
        digits[2][n + 2] = '|';
    if (segments[digit][3])
        digits[2][n + 1] = '_';
    if (segments[digit][4])
        digits[2][n] = '|';
    if (segments[digit][5])
        digits[1][n] = '|';
    if (segments[digit][6])
        digits[1][n + 1] = '_';
}
void print_digits_array(void) 
{
    int i, j;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < MAX_DIGITS * 4; j++) 
        {
            printf("\033[40;31m%c\033[0m",digits[i][j]);
        }
        printf("\n");
    }
    //printf("    ");
}
int display(int n)
{
    clear_digits_array();
    int nums[MAX_DIGITS];
    int k;
    for(k=0;k<MAX_DIGITS;k++)
        nums[k]=-1;
    int i=0;
    while(n>0)
    {
        int r=n%10;
        n/=10;
        nums[i++]=r;
        if(i>=MAX_DIGITS)
        {
            printf("TOO HUGE NUMBER!\n");
            return -1;
        }
    }
    int j=0;
    for(i=MAX_DIGITS-1;i>=0;i--)
    {
        if(nums[i]>=0)
        {
            process_digits_array(nums[i], j++);
        }
    }
    print_digits_array();
    return 1;
}
void countdown_display(int n)
{
    int i;
    system(CLEAR);
    for(i=n;i>0;i--)
    {
        display(i);
        sleep(1);
        system(CLEAR);
    }
}
void calculator_add(int n,int m)
{
    system(CLEAR);
    display(n);
    printf("\n+\n");
    display(m);
    printf("\n=\n");
    display(n+m);
}
上一篇下一篇

猜你喜欢

热点阅读