打印N位所有可能的数

为了解决溢出,采用char数组。

为了简洁,不用每个位挨个计算,采用递归

#include<stdio.h>
FILE *fp;
void prit(char data[])
{
int i=0;
while(data[i]==‘0‘)
i++;
while(data[i])
{
fprintf(fp,"%c",data[i]);
// printf("%c",data[i]);
i++;
}
// printf("\n");
fprintf(fp,"%s","||");
}

void xunhuan(char data[],int index)
{
int i;
if(index==3)
{
data[index]=0;
prit(data);
return;
}
for(i=0;i<=9;i++)
{
data[index]=i+‘0‘;
xunhuan(data,index+1);
}

}

void main()
{
fp=fopen("1.txt","w");
char dd[11];
xunhuan(dd,0);
fclose(fp);
}

时间: 2024-10-06 00:41:01

打印N位所有可能的数的相关文章

笔试算法题(20):寻找丑数 &amp; 打印1到N位的所有的数

出题:将只包含2,3,5的因子的数称为丑数(Ugly Number),要求找到前面1500个丑数: 分析: 解法1:依次判断从1开始的每一个整数,2,3,5是因子则整数必须可以被他们其中的一个整除,如果不包含任何其他因子则最终的结果为1: 解法2:小丑数必然是某个大丑数的因子,也就是乘以2,3,或者5之后的值,所以可以利用已经找到的丑数来寻找下一个丑数,使用数组有序保存已经找到的丑 数,并且当前最大丑数值为M:用大于M/2的丑数乘以2得到M1,用大于M/3的丑数乘以3得到M2,用大于M/5的丑数

用递归通过单字符输出打印多位的数字

#include <iostream> using namespace std; void printDigit( int n ) { cout << n; } void printOut( int n ) // Print nonnegative n { if( n >= 10 ) printOut( n / 10 ); printDigit( n % 10 ); } int main( ) { printOut( 1369 ); cout << endl; r

打印输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。

注意是否溢出 //字符串 /*#include <stdio.h> #include <stdlib.h> #include <string.h> int add(char str[],int len) { int is_overflow = 0; int is_add = 0; int i = 0; for (i = len - 1; i >= 0; i--) { if (i == len - 1) { str[i]++; if((len==1)&&am

判断一个数是否为回文数或者打印特定范围的回文数。

回文数:设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数. 1 public class PracticeDemo { 2 /** 3 *@Function: isPalindrome 4 *@Description:判断1个数是否为回文数(一个数正着读和反着读一样). 5 *@Input:一个整型数 6 *@Return_Type: boolean 7 *@Return:判断是否为回文花数(true和false) 8 *@Other:利用字符串知识点来解决

数组 冒泡排序 打印菱形 随机生成不同的数

判断一个数是否是质数  对这个数从1到这个数挨着取余 如果取余等于零则计数+1,所以当计数=2是  那么说明这个数只能被一和它本身整除 所以它是质数 打印菱形  每一行首先打印空格  然后打印符号 先打印上半部分 然后下半部分 这时候中间两行出现重复 那么需要去掉一行 数组 冒泡排序 首先定义数组 利用for循环把值输入到数组里边 后利用两个for循环 把数组里的数挨个比较 排序 如果a[i]<a[i+i] 然后进行交换 那么是降序输出 如果a[i]>a[i+1] 然后交换了  那么是升序排列

[转]as3 算法实例【输出1 到最大的N 位数 题目:输入数字n,按顺序输出从1 最大的n 位10 进制数。比如输入3,则输出1、2、3 一直到最大的3 位数即999。】

思路:如果我们在数字前面补0的话,就会发现n位所有10进制数其实就是n个从0到9的全排列.也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的10进制数. 1 /** 2 *ch 存放数字 3 *n n位数 4 *index 计数值 5 **/ 6 private function num(ch:Array,n:int,index:int):void 7 { 8 if(index==n) 9 { 10 trace(ch); 11 return; 12 } 13 for(var i:in

java:打印菱形图案(传参打印的自定义字符和行数)

打印菱形图案: 代码实现: public class Hello { public static void main(String args[]) { LingXingPrint("#", 7); } public static void LingXingPrint(String i, int num) { /** * 打印菱形,传参:i 为打印的字符,num为行数 . * 思路:将菱形分为上三角和下三角,上三角:每一行空格打印数为总行数-行号:每一行字符打印个数为2*行号-1;下三角

各数据类型在64位32位系统占字节数

操作系统:Windows10 64位专业版 实际打印 ---64bit complier (minGW) ------ int: 4 long: 4 double: 8 long long: 8 char: 1 char: 8 int: 8 ---32bit complier(minGW) ------ int: 4 long: 4 double: 8 long long: 8 char: 1 char: 4 int: 4 原文地址:https://www.cnblogs.com/yulongz

位运算求两数的最大值与最小值

1.最小值:(y^(x^y)&-(x<y)). 2.最大值:(y^(x^y)&(x<y-1))或(x^(x^y)&-(x<y)).