coding - 输出1到N位数

来源:互联网 发布:黄金列车 知乎 编辑:程序博客网 时间:2024/05/16 19:40

题目描述:

输入数字n,按顺序输出从1最大的n10进制数。比如输入3,则输出123一直到最大的3位数即999

分析:

1)输出1-n位数,一般都会写出来,如下:

void Print1toN(int n){int number = 1;int i = 0;while (i++ < n)number *=10;for (i = 0; i < number; i++)cout << i << "\t";cout << endl;}
2)如果n很大,将变成大数溢出,好在有解决方法,就是使用字符串来存储大数。

对于n位数,开辟n+1大小的空间来存储,最后一位‘\0‘。不足n位的用0补上。可以选择打印出来,也可以不打印。

void PrintNumber(char* number)  {      bool isBeginning0=true;      int nLength=strlen(number);        for(int i=0; i<nLength; i++)      {          if(isBeginning0 && number[i]!='0')              isBeginning0=false;            if(!isBeginning0)          {              cout<<number[i];          }      }      cout<<"\t";  }void Print1ToMax(char *number, int length, int index)  {      if(index==length-1)      {          PrintNumber(number);          return;      }            for(int i=0; i<10; i++)      {          number[index+1]=i+'0';          Print1ToMax(number, length, index+1);                }  } void Print1ToMaxOfN(int n)  {      if(n<0)          return;            char *number=new char[n+1];      number[n]='\0';            for(int i=0; i<10; i++)      {          number[0]=i+'0';          Print1ToMax(number, n, 0);      }  } 

Reference:

http://blog.csdn.net/cxllyg/article/details/7651410

原创粉丝点击