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++程序算法设计的学习有所帮助。
热门推荐
10 婚礼酒祝福语简短大气
11 别人的新年祝福语简短
12 奶茶店新年祝福语简短
13 卖奶茶开张祝福语简短
14 节日祝福语简短中秋暧昧
15 新年公司祝福语简短牛年
16 姐妹生日祝福语女孩简短
17 简短元旦祝福语古言
18 朋友儿子点灯祝福语简短