C++实现打印1到最大的n位数
本文以实例形式讲述了C++实现打印1到最大的n位数的方法。分享给大家供大家参考。具体方法如下:
题目要求:
输入数字n,按顺序打印出从1最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数999
实现代码如下:
#include<iostream> usingnamespacestd; voidprintArray(char*array,intsize) { if(array==NULL||size<=0) { return; } intindex=0; while(array[index]=='0') index++; for(inti=index;i!=size;i++) printf("%c",array[i]); cout<<endl; } voidprintNumbers(intn) { if(n<=0) { return; } char*array=newchar[n+1]; if(array==NULL) { throw("allocatememoryerror"); return; } memset(array,'0',n); array[n]=0; while(true) { inttakeOver=0; for(inti=n-1;i>=0;i--) { intnum=array[i]-'0'; if(i==n-1) { num++; } else { num+=takeOver; takeOver=0; } if(num==10) { if(i==0) gotohere; array[i]='0'; takeOver=1; } else { array[i]=num+'0'; break; } } printArray(array,n); } here: delete[]array; } voidmain() { intn=3; printNumbers(n); }
这里一定要注意break的使用
array[i]=num+'0';
break;
由于此break的存在,使得takeOver不用重新置为0
也就是说
while(true) { inttakeOver=0; for(inti=n-1;i>=0;i--) { intnum=array[i]-'0'; if(i==n-1) { num++; } else { num+=takeOver; //takeOver=0; } if(num==10) { if(i==0) gotohere; array[i]='0'; takeOver=1; } else { array[i]=num+'0'; break; } } printArray(array,n); }
希望本文所述对大家C++程序算法设计的学习有所帮助。