首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

产生某位的所有纯数字密码到文件解决方案

2012-06-18 
产生某位的所有纯数字密码到文件RT比如3位的,就是000001……999[解决办法]C/C++ code#include stdio.h#inc

产生某位的所有纯数字密码到文件
RT
比如3位的,就是
000
001
……
999

[解决办法]

C/C++ code
#include <stdio.h>#include<math.h>void main(){    int i, max, n=3;    // 位数    char temp[10];    sprintf(temp,"%%0%dd\n",n);    max=pow(10,n);    for(i=0;i<max;++i)    {        printf(temp,i);    }}运行结果:000001002...998999
[解决办法]
没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>int n,i,m;char fn[20];FILE *f;int main() { scanf("%d",&n); m=1; if (1<=n && n<=9) {  for (i=0;i<n;i++) m=m*10;  sprintf(fn,"%d.txt",m);  f=fopen(fn,"w");  for (i=0;i<m;i++) fprintf(f,"%0*d\n",n,i);  fclose(f); } return 0;}
[解决办法]
我写的比较麻烦...不过也贴上来了...
C/C++ code
#include <stdio.h>#include <string.h>void Itoa(int num,int len,char* str)//数字转字符串{    str[len]='\n';//最后的换行符    while(len>=1){        int nbit=num%10;        str[len-1]=nbit+'0';        len--;        num=num/10;    }}int main(void){    FILE* file=fopen("passwd.txt","wb");    int i=0,len,max=1;    printf("请输入密码位数\n");    scanf("%d",&len);    for(i=0;i<len;i++)        max*=10;    for(i=0;i<max;i++)    {        char str[256]="";        Itoa(i,len,str);        printf("str=%s",str);        fputs(str,file);    }        return 0;}
[解决办法]
探讨

没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
scanf("%d",&amp;n);
m=1;
if (1<=n &amp;&amp; n<=9) {
for (i=0;i<n;i++) m=m*10;
sprintf(fn,"%d……

[解决办法]
探讨
引用:

没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
scanf("%d",&amp;amp;n);
m=1;
if (1<=n &amp;amp;&amp;amp; n<=9) {
for (i=0;i<n;……
产生数字和写文件是比较简单的,主要是这句控制格式的稍微有难度吧:
for (i=0;i<m;i++) fprintf(f,"%0*d\n",n,i);//"%0*d\n",+1

[解决办法]
C程序员要对
scanf
printf
类函数的使用要做到“拳不离手,曲不离口。”的程度。
在参考这个例子:
C/C++ code
#include <stdio.h>char s[]="123 ab 4";char *p;int v,n,k;void main() {    p=s;    while (1) {        k=sscanf(p,"%d%n",&v,&n);        printf("k,v,n=%d,%d,%d\n",k,v,n);        if (1==k) {            p+=n;        } else if (0==k) {            printf("skip char[%c]\n",p[0]);            p++;        } else {//EOF==k            break;        }    }    printf("End.\n");}//k,v,n=1,123,3//k,v,n=0,123,3//skip char[ ]//k,v,n=0,123,3//skip char[a]//k,v,n=0,123,3//skip char[b]//k,v,n=1,4,2//k,v,n=-1,4,2//End.
[解决办法]
在参考这个例子:
应为
再参考这个例子:
拼音输入法惹的祸。


[解决办法]
感谢赵老师,学习了。

探讨

C程序员要对
scanf
printf
类函数的使用要做到“拳不离手,曲不离口。”的程度。
在参考这个例子:
C/C++ code
#include <stdio.h>
char s[]="123 ab 4";


char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&a……


[解决办法]
Python比C慢。
[解决办法]
t_min=(int)pow(10.0,(double)(n-i));//?

[解决办法]
上边所有的算法都认为位数一定小于10。。。。

[解决办法]
探讨
上边所有的算法都认为位数一定小于10。。。。

[解决办法]
探讨

引用:
上边所有的算法都认为位数一定小于10。。。。

你不妨写一个认为位数一定不小于1000000000000000000000000000的代码出来让俺们欣赏欣赏?(^_^)

[解决办法]
探讨
引用:

t_min=(int)pow(10.0,(double)(n-i));//?

这个嘛还是不行,不过问题的确是出在pow函数上面

[解决办法]
探讨
没实际编译链接调试,不保证对。仅供参考:

C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
 scanf("%d",&amp;n);
 m=1;
if (1<=n &amp;&amp; n<=9) {
for (i=0;i<n;i++) m=m*10;
spri……

[解决办法]
因为32位int的有效范围是-2147483648..2147483647,所以n=1..9

热点排行