举个栗子:0000000递增,格式是这样的:
<code>0000001 0000002 0000003 .....递增到10 0000010 .....递增到100 0000100 .....递增到100000 0100000 </code>
模仿着@G_Koala_C的回答,写了php版的:
<code>for ($i = 0; $i < 100; $i++) {
$zero = '';
$k = 7-strlen($i);
for ($j = $k; $j >0; $j--) {
$zero .= 0;
}
echo $zero.$i.'<br>';
}</code>举个栗子:0000000递增,格式是这样的:
<code>0000001 0000002 0000003 .....递增到10 0000010 .....递增到100 0000100 .....递增到100000 0100000 </code>
模仿着@G_Koala_C的回答,写了php版的:
立即学习“Java免费学习笔记(深入)”;
<code>for ($i = 0; $i < 100; $i++) {
$zero = '';
$k = 7-strlen($i);
for ($j = $k; $j >0; $j--) {
$zero .= 0;
}
echo $zero.$i.'<br>';
}</code>
js写法, 原理就是先算数字的长度,然后在前边补零。现在是到100,你可以把i改到100000
<code>for (var i = 0 ; i <= 100; i ++){
var zero = "";
for (var j = 7-i.toString().length; j > 0; j--) {
zero += "0";
}
console.log(zero + i);
}</code>
其实是补零的问题额,Python 3写这样:
<code>["{:0>7}".format(i) for i in range(1, 100001)]</code>再提供一个js的写法
<code>Array.from(Array(1000000).keys()).map(function(x){ return "0".repeat(8 - ("" + (x + 1)).length) + (x+1)})</code>
PHP
<code>for ($i=0;$i<=9999999;$i++) echo str_pad($i,7,"0",STR_PAD_LEFT);</code>
提供一个未来可能能使用的方法。。
<code>for (let i = 0; i <= 100; i++) console.log(String(i).padStart(7,'0'))</code>
<code>function incrace(){
console.log((n=>(7-n.length)>0?(new Array(7-n.length+1)).join(0)+n:n)(String(i++)));
setTimeout(incrace,500);
}
var i = 0;
incrace();
</code>写完才发现问题已经解答了…js代码,供参考
JS
<code>var len = 10; //长度
for (var i = 1; i <= 100; i++) {
console.log((Array(len).join(0) + Math.abs(i)).slice(-len));
}</code>
来来来...上一套PHP版野路子
<code>// 定义一个位数比结果位数多的初始值
$base_num = 10000000;
// 开搞
for ($i = 0; $i < 100; $i++) {
echo substr($base_num += $i, -7), "\n";
}</code>
看我C语言的:
<code>for (int i = 0; i < 10000000; i++) {
printf("%07d\n", i);
}</code>补零后的长度其实也是可配的:
<code>// 补零后长度, 注意printf的变化~
in len = 7;
for (int i = 0; i < 10000000; i++) {
printf("%0*d\n", len, i);
}</code>
我发现很多回答都不是真正意义上的算法,我还以为类似C语言printf函数的实现呢.
上一个模拟printf函数的C语言实现吧,这个问题不用计算长度
请在支持C99的编译器上运行.(C89不支持)
<code>#include <string.h>
#include <stdlib.h>
void ltoa(long num, int width, char *str)
{
static char digs[] = "0123456789";//为了方便扩展十六进制
char ac[width+1];// C99支持; +1 是因为字符串必须以'\0'结尾,但这个不计入字符串长度.
int i = width; // 这个变量可以直接用i代替的,但是这个函数是我之前写的,懒得改下面代码
memset(&ac, '0', width); //直接把全部内存先置'0'
ac[i] = '\0';//字符串结尾必须是'\0'
//后面是整数转字符串的代码,思路就是除法和余数得到每一位数字(进制转换也是同样思想)
//例如123 /10 = 12_3
// 12 / 10 = 1_2
// 1 / 10 = 0_1
//你可以看到,余数 3,2,1 倒置过来就是1,2,3.
//把 3, 2 ,1 倒置复制到 内存空间就行了.
if(num)
ac[--i] = digs[num % 10];
num = num / 10;
while( 0 < num && 0 < i)
{
ldiv_t qr = ldiv(num, 10);
// ldiv_t 用结构体,主要方便一次性取出余数和商
num = qr.quot;
ac[--i] = digs[qr.rem]; // 把0,1,3,4转换成'0','1','2','3',也可用0+'0' 的方法,但是上面已经说明,为了扩展到其他进制方便.
}
int n = sizeof(ac) - i;
memcpy(str, &ac, width +1);//把字符串和\0 复制到缓冲区.
}
</code>
<code> int max = 一个数字;
for (int i = 0; i < max; i++) {
String tem = "";
for (int j = 0; j < len - (i + "").toString().length(); j++) {
tem = tem + "0";
}
System.out.println(tem+i);
}</code>
有人把值改成100000以上么
为啥没有C/C++版本啊。
看你们写的这么复杂我就放心了
这还要写什么算法吗?来个mysql版本的:
<code>CREATE TABLE `test` ( `tid` int(7) UNSIGNED ZEROFILL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号