打印1到最大的n位数

 1 #include "stdafx.h"
 2 #include <iostream>
 3 #include <exception>
 4 #include <vector>
 5 #include <stack>
 6 /*
 7 题目:打印1到最大的n位数
 8      输入数字n,按顺序打印出从1到最大的n位数的十进制数.比如输入3,则打印出1,2,3一直到最大的3位数即999
 9 */
10 using namespace std;
11 
12 bool Increment(char * number)
13 {
14     bool isOverflow = false;
15     int nTakeOver = 0;
16     int nLength = strlen(number);
17     cout<<"strlen(number):"<<nLength<<endl;
18     for(int i = nLength -1;i>=0;--i)
19     {
20         int nSum = number[i]-'0'+nTakeOver;//将第i位的字符改成整形.加上是否有进位.
21         if(i==nLength-1)
22             nSum++; //往最低位加一个1,如果加上1,大于等于10.就要往前进位.
23         if(nSum>=10)
24         {
25             if(i==0)
26                 isOverflow = true;
27             else
28             {
29                 nSum -=10;
30                 nTakeOver = 1;
31                 number[i] = '0' +nSum;
32             }
33         }
34         else
35         {
36             number[i] = '0' +nSum;
37             break;
38         }
39     }
40     return isOverflow;
41 }
42 void PrintNumber(char* number)
43 {
44     while(*number=='0')
45         number++;
46     cout<<number<<endl;
47 }
48 
49 
50 int _tmain(int argc, _TCHAR* argv[])
51 { 
52     int n;
53     cin>>n;
54     if(n<=0)
55 
56     {
57         cout<<"n不合适"<<endl;
58     }
59     else
60     {
61         char *number = new char[n+1];
62         //number[0]='0';
63         memset(number,'0',n);
64         number[n] = '\0';
65         while(!Increment(number))
66         {
67             PrintNumber(number);
68         }
69             delete []number;
70     }
71 
72     return 0 ;
73 }

 

posted @ 2014-02-23 00:32  CrazyCode.  阅读(293)  评论(0)    收藏  举报