输入:1 打印123456789
输入:2打印123456789-99
#include <stdio.h> #include <stdlib.h> #include <string.h> void printnumber(char *number){ bool isBeginning0 = true; int nlength = strlen(number); for(int i=0;i<nlength;++i){ if(isBeginning0&&number[i]!='0') isBeginning0 = false; if(!isBeginning0) printf("%c",number[i]); //printf("\t"); } } void allsort(char *number,int length,int index){ if(index==length){//index默认为0,如果长度为1的话那么就1-9直接输出 printnumber(number);//这是递归结束的标志 当index索引变成length的时候 return ; } for(int i=0;i<10;++i){//否则进入循环 number[0+1] 进入递归 number[index] = i+'0'; allsort(number,length,index+1); } } //再次改进 使用大数 字符串数组装数 全排列递归 void printfmaxofrange3(int n){ if(n<=0) return; //int i=0; char *number = new char[n+1];//创造n+1的空间 //char *number = (char *)malloc(sizeof(char *)*(n+1)); number[n] = '\0';//最后一位赋值上字符串结束标识 allsort(number, n,0);//在用递归进行下一位的全排列 } int main(){ printfmaxofrange3(3); return 0; }