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








