举个栗子:0000000递增,格式是这样的:
1 2 3 4 5 6 7 8 9 10 | <code>0000001
0000002
0000003
.....递增到10
0000010
.....递增到100
0000100
.....递增到100000
0100000
</code>
|
로그인 후 복사
로그인 후 복사
模仿着@G_Koala_C的回答,写了php版的:
1 2 3 4 5 6 7 8 | <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递增,格式是这样的:
1 2 3 4 5 6 7 8 9 10 | <code>0000001
0000002
0000003
.....递增到10
0000010
.....递增到100
0000100
.....递增到100000
0100000
</code>
|
로그인 후 복사
로그인 후 복사
模仿着@G_Koala_C的回答,写了php版的:
1 2 3 4 5 6 7 8 | <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
1 2 3 4 5 6 7 | <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写这样:
1 | <code>[ "{:0>7}" .format(i) for i in range(1, 100001)]</code>
|
로그인 후 복사
再提供一个js的写法
1 | <code>Array.from(Array(1000000).keys()).map( function (x){ return "0" .repeat(8 - ( "" + (x + 1)).length) + (x+1)})</code>
|
로그인 후 복사
PHP
1 | <code> for ( $i =0; $i <=9999999; $i ++) echo str_pad ( $i ,7, "0" ,STR_PAD_LEFT);</code>
|
로그인 후 복사
提供一个未来可能能使用的方法。。
1 | <code> for (let i = 0; i <= 100; i++) console.log(String(i).padStart(7, '0' ))</code>
|
로그인 후 복사
1 2 3 4 5 6 7 | <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
1 2 3 4 | <code> var len = 10;
for ( var i = 1; i <= 100; i++) {
console.log((Array(len).join(0) + Math. abs (i)).slice(-len));
}</code>
|
로그인 후 복사
来来来...上一套PHP版野路子
1 2 3 4 5 6 | <code>
$base_num = 10000000;
for ( $i = 0; $i < 100; $i ++) {
echo substr ( $base_num += $i , -7), "\n" ;
}</code>
|
로그인 후 복사
看我C语言的:
1 2 3 | <code> for (int i = 0; i < 10000000; i++) {
printf( "%07d\n" , i);
}</code>
|
로그인 후 복사
补零后的长度其实也是可配的:
1 2 3 4 5 | <code>
in len = 7;
for (int i = 0; i < 10000000; i++) {
printf( "%0*d\n" , len, i);
}</code>
|
로그인 후 복사
我发现很多回答都不是真正意义上的算法,我还以为类似C语言printf函数的实现呢.
上一个模拟printf函数的C语言实现吧,这个问题不用计算长度
请在支持C99的编译器上运行.(C89不支持)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <code># include <string.h>
# include <stdlib.h>
void ltoa(long num, int width, char *str)
{
static char digs[] = "0123456789" ;
char ac[width+1];
int i = width;
memset(&ac, '0' , width);
ac[i] = '\0' ;
if (num)
ac[--i] = digs[num % 10];
num = num / 10;
while ( 0 < num && 0 < i)
{
ldiv_t qr = ldiv(num, 10);
num = qr.quot;
ac[--i] = digs[qr.rem];
}
int n = sizeof(ac) - i;
memcpy(str, &ac, width +1);
}
</code>
|
로그인 후 복사
1 2 3 4 5 6 7 8 | <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版本的:
1 2 3 | <code>CREATE TABLE `test` (
`tid` int(7) UNSIGNED ZEROFILL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
|
로그인 후 복사