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++程序算法设计的学习有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下