打印1到最大的n位数-C++

博客分享了一个大牛的人工智能教程,该教程零基础、通俗易懂且风趣幽默,旨在邀请更多人加入人工智能队伍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程

// 面试题17:打印1到最大的n位数
// 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则
// 打印出1、2、3一直到最大的3位数即999。

#include <cstdio>
#include <memory>

void PrintNumber(char *number);
bool Increment(char *number);
void Print1ToMaxOfNDigitsRecursively(char *number, int length, int index);

// ====================方法一====================
void Print1ToMaxOfNDigits_1(int n)
{
    if (n <= 0)
        return;

    char *number = new char[n + 1];
    memset(number, '0', n);
    number[n] = '\0';

    while (!Increment(number))
    {
        PrintNumber(number);
    }

    delete[] number;
}

// 字符串number表示一个数字,在 number上增加1
// 如果做加法溢出,则返回true;否则为false
bool Increment(char *number)
{
    bool isOverflow = false;
    int nTakeOver = 0;
    int nLength = strlen(number);

    for (int i = nLength - 1; i >= 0; i--)
    {
        int nSum = number[i] - '0' + nTakeOver;
        if (i == nLength - 1)
            nSum++;

        if (nSum >= 10)
        {
            if (i == 0)
                isOverflow = true;
            else
            {
                nSum -= 10;
                nTakeOver = 1;
                number[i] = '0' + nSum;
            }
        }
        else
        {
            number[i] = '0' + nSum;
            break;
        }
    }

    return isOverflow;
}

// ====================方法二====================
void Print1ToMaxOfNDigits_2(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';
        Print1ToMaxOfNDigitsRecursively(number, n, 0);
    }

    delete[] number;
}

void Print1ToMaxOfNDigitsRecursively(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';
        Print1ToMaxOfNDigitsRecursively(number, length, index + 1);
    }
}

// ====================公共函数====================
// 字符串number表示一个数字,数字有若干个0开头
// 打印出这个数字,并忽略开头的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)
        {
            printf("%c", number[i]);
        }
    }

    printf("\t");
}

// ====================测试代码====================
void Test(int n)
{
    printf("Test for %d begins:\n", n);

    Print1ToMaxOfNDigits_1(n);
    Print1ToMaxOfNDigits_2(n);

    printf("\nTest for %d ends.\n", n);
}

int main(int argc, char *argv[])
{
    Test(1);
    Test(2);
    Test(3);
    Test(0);
    Test(-1);

    return 0;
}

// ------ Output ------
/*
Test for 1 begins:
1       2       3       4       5       6       7       8       9               1       2   34       5       6       7       8       9
Test for 1 ends.
Test for 2 begins:
1       2       3       4       5       6       7       8       9       10      11      12  13       14      15      16      17      18      19      20      21      22      23      24  25       26      27      28      29      30      31      32      33      34      35      36  37       38      39      40      41      42      43      44      45      46      47      48  49       50      51      52      53      54      55      56      57      58      59      60  61       62      63      64      65      66      67      68      69      70      71      72  73       74      75      76      77      78      79      80      81      82      83      84  85       86      87      88      89      90      91      92      93      94      95      96  97       98      99              1       2       3       4       5       6       7       8   910      11      12      13      14      15      16      17      18      19      20      21  22       23      24      25      26      27      28      29      30      31      32      33  34       35      36      37      38      39      40      41      42      43      44      45  46       47      48      49      50      51      52      53      54      55      56      57  58       59      60      61      62      63      64      65      66      67      68      69  70       71      72      73      74      75      76      77      78      79      80      81  82       83      84      85      86      87      88      89      90      91      92      93  94       95      96      97      98      99
Test for 2 ends.
Test for 3 begins:
1       2       3       4       5       6       7       8       9       10      11      12  13       14      15      16      17      18      19      20      21      22      23      24  25       26      27      28      29      30      31      32      33      34      35      36  37       38      39      40      41      42      43      44      45      46      47      48  49       50      51      52      53      54      55      56      57      58      59      60  61       62      63      64      65      66      67      68      69      70      71      72  73       74      75      76      77      78      79      80      81      82      83      84  85       86      87      88      89      90      91      92      93      94      95      96  97       98      99      100     101     102     103     104     105     106     107     108 109      110     111     112     113     114     115     116     117     118     119     120 121      122     123     124     125     126     127     128     129     130     131     132 133      134     135     136     137     138     139     140     141     142     143     144 145      146     147     148     149     150     151     152     153     154     155     156 157      158     159     160     161     162     163     164     165     166     167     168 169      170     171     172     173     174     175     176     177     178     179     180 181      182     183     184     185     186     187     188     189     190     191     192 193      194     195     196     197     198     199     200     201     202     203     204 205      206     207     208     209     210     211     212     213     214     215     216 217      218     219     220     221     222     223     224     225     226     227     228 229      230     231     232     233     234     235     236     237     238     239     240 241      242     243     244     245     246     247     248     249     250     251     252 253      254     255     256     257     258     259     260     261     262     263     264 265      266     267     268     269     270     271     272     273     274     275     276 277      278     279     280     281     282     283     284     285     286     287     288 289      290     291     292     293     294     295     296     297     298     299     300 301      302     303     304     305     306     307     308     309     310     311     312 313      314     315     316     317     318     319     320     321     322     323     324 325      326     327     328     329     330     331     332     333     334     335     336 337      338     339     340     341     342     343     344     345     346     347     348 349      350     351     352     353     354     355     356     357     358     359     360 361      362     363     364     365     366     367     368     369     370     371     372 373      374     375     376     377     378     379     380     381     382     383     384 385      386     387     388     389     390     391     392     393     394     395     396 397      398     399     400     401     402     403     404     405     406     407     408 409      410     411     412     413     414     415     416     417     418     419     420 421      422     423     424     425     426     427     428     429     430     431     432 433      434     435     436     437     438     439     440     441     442     443     444 445      446     447     448     449     450     451     452     453     454     455     456 457      458     459     460     461     462     463     464     465     466     467     468 469      470     471     472     473     474     475     476     477     478     479     480 481      482     483     484     485     486     487     488     489     490     491     492 493      494     495     496     497     498     499     500     501     502     503     504 505      506     507     508     509     510     511     512     513     514     515     516 517      518     519     520     521     522     523     524     525     526     527     528 529      530     531     532     533     534     535     536     537     538     539     540 541      542     543     544     545     546     547     548     549     550     551     552 553      554     555     556     557     558     559     560     561     562     563     564 565      566     567     568     569     570     571     572     573     574     575     576 577      578     579     580     581     582     583     584     585     586     587     588 589      590     591     592     593     594     595     596     597     598     599     600 601      602     603     604     605     606     607     608     609     610     611     612 613      614     615     616     617     618     619     620     621     622     623     624 625      626     627     628     629     630     631     632     633     634     635     636 637      638     639     640     641     642     643     644     645     646     647     648 649      650     651     652     653     654     655     656     657     658     659     660 661      662     663     664     665     666     667     668     669     670     671     672 673      674     675     676     677     678     679     680     681     682     683     684 685      686     687     688     689     690     691     692     693     694     695     696 697      698     699     700     701     702     703     704     705     706     707     708 709      710     711     712     713     714     715     716     717     718     719     720 721      722     723     724     725     726     727     728     729     730     731     732 733      734     735     736     737     738     739     740     741     742     743     744 745      746     747     748     749     750     751     752     753     754     755     756 757      758     759     760     761     762     763     764     765     766     767     768 769      770     771     772     773     774     775     776     777     778     779     780 781      782     783     784     785     786     787     788     789     790     791     792 793      794     795     796     797     798     799     800     801     802     803     804 805      806     807     808     809     810     811     812     813     814     815     816 817      818     819     820     821     822     823     824     825     826     827     828 829      830     831     832     833     834     835     836     837     838     839     840 841      842     843     844     845     846     847     848     849     850     851     852 853      854     855     856     857     858     859     860     861     862     863     864 865      866     867     868     869     870     871     872     873     874     875     876 877      878     879     880     881     882     883     884     885     886     887     888 889      890     891     892     893     894     895     896     897     898     899     900 901      902     903     904     905     906     907     908     909     910     911     912 913      914     915     916     917     918     919     920     921     922     923     924 925      926     927     928     929     930     931     932     933     934     935     936 937      938     939     940     941     942     943     944     945     946     947     948 949      950     951     952     953     954     955     956     957     958     959     960 961      962     963     964     965     966     967     968     969     970     971     972 973      974     975     976     977     978     979     980     981     982     983     984 985      986     987     988     989     990     991     992     993     994     995     996 997      998     999             1       2       3       4       5       6       7       8   910      11      12      13      14      15      16      17      18      19      20      21  22       23      24      25      26      27      28      29      30      31      32      33  34       35      36      37      38      39      40      41      42      43      44      45  46       47      48      49      50      51      52      53      54      55      56      57  58       59      60      61      62      63      64      65      66      67      68      69  70       71      72      73      74      75      76      77      78      79      80      81  82       83      84      85      86      87      88      89      90      91      92      93  94       95      96      97      98      99      100     101     102     103     104     105 106      107     108     109     110     111     112     113     114     115     116     117 118      119     120     121     122     123     124     125     126     127     128     129 130      131     132     133     134     135     136     137     138     139     140     141 142      143     144     145     146     147     148     149     150     151     152     153 154      155     156     157     158     159     160     161     162     163     164     165 166      167     168     169     170     171     172     173     174     175     176     177 178      179     180     181     182     183     184     185     186     187     188     189 190      191     192     193     194     195     196     197     198     199     200     201 202      203     204     205     206     207     208     209     210     211     212     213 214      215     216     217     218     219     220     221     222     223     224     225 226      227     228     229     230     231     232     233     234     235     236     237 238      239     240     241     242     243     244     245     246     247     248     249 250      251     252     253     254     255     256     257     258     259     260     261 262      263     264     265     266     267     268     269     270     271     272     273 274      275     276     277     278     279     280     281     282     283     284     285 286      287     288     289     290     291     292     293     294     295     296     297 298      299     300     301     302     303     304     305     306     307     308     309 310      311     312     313     314     315     316     317     318     319     320     321 322      323     324     325     326     327     328     329     330     331     332     333 334      335     336     337     338     339     340     341     342     343     344     345 346      347     348     349     350     351     352     353     354     355     356     357 358      359     360     361     362     363     364     365     366     367     368     369 370      371     372     373     374     375     376     377     378     379     380     381 382      383     384     385     386     387     388     389     390     391     392     393 394      395     396     397     398     399     400     401     402     403     404     405 406      407     408     409     410     411     412     413     414     415     416     417 418      419     420     421     422     423     424     425     426     427     428     429 430      431     432     433     434     435     436     437     438     439     440     441 442      443     444     445     446     447     448     449     450     451     452     453 454      455     456     457     458     459     460     461     462     463     464     465 466      467     468     469     470     471     472     473     474     475     476     477 478      479     480     481     482     483     484     485     486     487     488     489 490      491     492     493     494     495     496     497     498     499     500     501 502      503     504     505     506     507     508     509     510     511     512     513 514      515     516     517     518     519     520     521     522     523     524     525 526      527     528     529     530     531     532     533     534     535     536     537 538      539     540     541     542     543     544     545     546     547     548     549 550      551     552     553     554     555     556     557     558     559     560     561 562      563     564     565     566     567     568     569     570     571     572     573 574      575     576     577     578     579     580     581     582     583     584     585 586      587     588     589     590     591     592     593     594     595     596     597 598      599     600     601     602     603     604     605     606     607     608     609 610      611     612     613     614     615     616     617     618     619     620     621 622      623     624     625     626     627     628     629     630     631     632     633 634      635     636     637     638     639     640     641     642     643     644     645 646      647     648     649     650     651     652     653     654     655     656     657 658      659     660     661     662     663     664     665     666     667     668     669 670      671     672     673     674     675     676     677     678     679     680     681 682      683     684     685     686     687     688     689     690     691     692     693 694      695     696     697     698     699     700     701     702     703     704     705 706      707     708     709     710     711     712     713     714     715     716     717 718      719     720     721     722     723     724     725     726     727     728     729 730      731     732     733     734     735     736     737     738     739     740     741 742      743     744     745     746     747     748     749     750     751     752     753 754      755     756     757     758     759     760     761     762     763     764     765 766      767     768     769     770     771     772     773     774     775     776     777 778      779     780     781     782     783     784     785     786     787     788     789 790      791     792     793     794     795     796     797     798     799     800     801 802      803     804     805     806     807     808     809     810     811     812     813 814      815     816     817     818     819     820     821     822     823     824     825 826      827     828     829     830     831     832     833     834     835     836     837 838      839     840     841     842     843     844     845     846     847     848     849 850      851     852     853     854     855     856     857     858     859     860     861 862      863     864     865     866     867     868     869     870     871     872     873 874      875     876     877     878     879     880     881     882     883     884     885 886      887     888     889     890     891     892     893     894     895     896     897 898      899     900     901     902     903     904     905     906     907     908     909 910      911     912     913     914     915     916     917     918     919     920     921 922      923     924     925     926     927     928     929     930     931     932     933 934      935     936     937     938     939     940     941     942     943     944     945 946      947     948     949     950     951     952     953     954     955     956     957 958      959     960     961     962     963     964     965     966     967     968     969 970      971     972     973     974     975     976     977     978     979     980     981 982      983     984     985     986     987     988     989     990     991     992     993 994      995     996     997     998     999
Test for 3 ends.
Test for 0 begins:

Test for 0 ends.
Test for -1 begins:

Test for -1 ends.
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值