整体思路:输入数字n,开始通过字符数组来组装数据,例如输入4,最终得到的字符数组就是char *str = [9,9,9,9];,打印的时候就从数组的0位开始拼接到n-1位,完成输出。
include <iostream>
include <cstring>
using namespace std;
bool Increment(char *str,int length){
if (str == NULL && length<1) {
return false;
}
int sum = str[length-1]-'0'+1;
if (sum<10) {
str[length-1]+=1;
return true;
}else{
if (length-1==0) {
return false;
}
str[length-1]='0';
return Increment(str, length-1);
}
}
void print(char * str){
bool isBegin = false;
int i;
for (i=0; i<strlen(str); i++) {
if (!isBegin && str[i]!='0') {
isBegin=true;
}
if (isBegin) {
cout<<str[i];
}
}
cout<<endl;
}
void toMaxN(int n){
if (n>=1) {
char *str = new char[n+1];
memset(str, '0', n);
str[n]='\0';
while (Increment(str, n)) {
print(str);
}
delete []str;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "打印1到最大n位数:\n";
toMaxN(3);
return 0;
}
网友评论