程序优化 为什么第一个程序比第二个快?
当把第二个代码的char *s;改为static char *s;是第二个快 为什么呢?第一个:
程序代码:
#include<stdio.h> #include<stdlib.h> void f(long m,int n){ static char *s; long *a; int i; s=(char *)malloc(n); a=(long *)malloc(n*sizeof(long)); for(i=0;i<n;i++){ a[i]=m%3; m=m/3; } for(i=0;i<n;i++){ sprintf(&s[i],"%d",a[n-1-i]); } printf("%s ",s); } int main(){ int i,n; long j; printf("请输入位数:\n"); while(scanf("%d",&n)){ for(i=1;i<=n;i++){ for(j=0;j<=(pow(3,i)-1);j++){ f(j,i); } } printf("\n"); } }
第二个:
程序代码:
#include<stdio.h> #include<stdlib.h> void f(long m,int n){ char *s; int i; s=(char *)malloc(n+1); for(i=0;i<n;i++){ s[n-1-i]='0'+m%3; m=m/3; } s[i]='\0'; printf("%s ",s); } int main(){ int i,n; long j; printf("请输入位数:\n"); while(scanf("%d",&n)){ for(i=1;i<=n;i++){ for(j=0;j<=(pow(3,i)-1);j++){ f(j,i); } } printf("\n"); } }
[ 本帖最后由 lxsjzbd 于 2012-4-8 13:39 编辑 ]