1/****************************************2>FileName:test.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月26日星期四15时31分00秒6****************************************/789101112//此题的关键是解决大数问题,在这里我用字符数组解决大数的存储13//在字符数组的最后一位存的是最低位,依次往前推,加1是在最低位加的14//当低位为9时,加1会发生进位,所以进到高位时要先加1,所以要设置进位标志15//当最高位发生进位时,则表示到了最大的数161718#include<stdio.h>1920voidPrint(char*buf)21{22intsize=sizeof(buf);2324for(inti=0;i<size;i++)//使buf指向第一个不为‘0’的字符25{26if(buf[i]=='0')27{28buf++;29}30else31{32break;33}34}3536printf("%s\t",buf);37}3839intisBiggest(char*buf)40{41intflog=0;42intsize=sizeof(buf);43intover_flog=0;//进位标志44inti=0;4546for(i=size-1;i>=0;i--)47{48intsum=buf[i]-'0'+over_flog;//把最i位的值取出来49if(i==size-1)//当是最低位时,则在这一位上加150{51sum+=1;52}5354if(sum>=10)//产生进位55{56if(i==0)//当最高位要进位了,就代表已经是最大值了57{58flog=1;59}60else61{62buf[i]='0';//这一位要变为063over_flog=1;//高一位的要加164}65}66else//不需要进位67{68buf[i]='0'+sum;69break;70}7172returnflog;73}74}757677voidPrintToMax(intn)78{79if(n<=0)80{81printf("parameteriserror!\n");82return;83}8485char*buf=(char*)melloc((n+1)*sizeof(char));86memset(buf,'0',sizeof(buf));87buf[n]='\0';8889while(!isBiggest(buf))90{91Print(buf);92}9394free(buf);95}96


1/****************************************2>FileName:test1.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月26日星期四16时44分54秒6****************************************/78#include<stdio.h>91011voidPrint(char*buf)12{13intsize=sizeof(buf);1415for(inti=0;i<size;i++)//使buf指向第一个不为‘0’的字符16{17if(buf[i]=='0')18{19buf++;20}21else22{23break;24}25}2627printf("%s\t",buf);28}2930voidPrintDigit(char*buf,intlength,intindex)31{32if(index==length)33{34Print(buf);35return;36}3738for(inti=0;i<10;i++)39{40buf[index]='0'+i;41PrintDigit(buf,length,index+1);42}43}4445voidPrintToMax(intn)46{47if(n<=0)48{49printf("parameteriserror!\n");50return;51}5253char*buf=(char*)melloc(size(char)*(n+1));54memset(buf,'0',sizeof(buf));55buf[n]='\0';5657for(inti=0;i<10;i++)58{59PrintDigit(buf,n,0);60}61}