程序优化  为什么第一个程序比第二个快?
											当把第二个代码的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 编辑 ]



											
	    

	

