zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C/C++之文件打开方式差别
    C/C++获取文件大小
    dedecms使用
    TCP/IP概念简述
    protobuf新增message报错:类型已存在
    亚马逊MWS开发套路演示
    请求MWS报错401:Access Denied
    敏捷开发
    过滤器和拦截器的区别
    防盗链
  • 原文地址:https://www.cnblogs.com/youxin/p/3281767.html
Copyright © 2011-2022 走看看