• c显示数字的LED(数字转LED)


    实现这么一个函数:传入一个int,在屏幕输出类似LED显示屏效果的字母拼图,例如:

     输入1234567890,输出:

     请注意每个字符的固定宽度和高度,两个数字间保留一个空格

     函数名:void LEDprint(int num);

    此题是表驱动方法的典型应用。

    #include<iostream>
    #include<string>
    #include<vector>
    #include<algorithm>
    using namespace std;
    //每个字符宽度为5,长度为7
    string LEDarray[][7]={
        {" --- ", //0
         "|   |",
         "|   |",
         "|   |",
         "|   |",
         "|   |",
         " --- "},
    
        {"     ", //1
         "    |",
         "    |",
         "     ",
         "    |",
         "    |",
         "     "},
    
        {" --- ", // 2
        "    |",
        "    |",
        " --- ",
        "|    ",
        "|    ",
        " --- "},
    
       {" --- ",
        "    |",
        "    |",
        " --- ",
        "    |",
        "    |",
        " --- "},
    
       {"     ",
        "|   |",
        "|   |",
        " --- ",
        "    |",
        "    |",
        "     "},
    
       {" --- ",
        "|    ",
        "|    ",
        " --- ",
        "    |",  
        "    |",
        " --- "},
    
       {" --- ",
        "|    ",
        "|    ",
        " --- ",
        "|   |",
        "|   |",
        " --- "},
    
       {" --- ",
        "    |",
        "    |",
        "     ",
        "    |",
        "    |",
        "     "},
    
       {" --- ",
        "|   |",
        "|   |",
        " --- ",
        "|   |",
        "|   |",
        " --- "},
    
       {" --- ",
        "|   |",
        "|   |",
        " --- ",
        "    |",
        "    |",
        " --- "}
    };
     
    void LEDPrint(int num)
    {
         if(num<0)
             return;
         char str[11]={''};
         itoa(num,str,10);
    
         int len=strlen(str);
         string (*LED)[7]=new string[len][7];
    
         for(int i=0;i<len;i++)
         {
             int index=str[i]-'0';//重点在这里
             for(int j=0;j<7;j++)
             {
                 LED[i][j]=LEDarray[index][j];
             }
         }
         
         for(int j=0;j<7;j++)
         {
             for(int i=0;i<len;i++)
             {
                 cout<<LED[i][j]<<" ";
             }
             cout<<endl;
         }
         /*
          这里不能delete,因为后面的7,不能new出来的,
         for(int i=0;i<len;i++)
          delete[] LED[i];
            
        */
         delete[] LED;
    }
    
            
    
    int main()
    {
        cout<<"input a number"<<endl;
        int num;
        while(cin>>num)
        {
            LEDPrint(num);
        }
        cout<<endl<<endl;
    }

    唯一值得注意的地方是delete:

      只需delete[] LED即可。后面的7不是new出来的,如果delete程序会运行错误
    还有一点

    还有一点,char的大小为什么是:
    char str[11]
    因为int类型的最大的只有10位,我们开辟11就够了。
    参考:http://blog.chinaunix.net/uid-27034868-id-3811600.html

  • 相关阅读:
    交叉编译
    CompactPCI之系统管理设计与应用
    羽毛球发球规则
    记忆里第一次看孙淳演的电视剧——《浦江叙事》
    理财工具——七大标准比率
    samba常见问题
    Samba配置文件常用参数详解
    samba安装和简单配置
    mdadm中文man帮助
    说一说羽毛球的几种概念
  • 原文地址:https://www.cnblogs.com/youxin/p/3281767.html
Copyright © 2020-2023  润新知