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++程序算法设计的学习有所帮助。