[求助]C语言基础 Static问题
朋友问我求1~1000的完数的题目,我给他的代码如下:#include "stdio.h"
int ws(int i){
int k,sum=0,j=0;
int a[100];
for(k=1;k<=i/2;k++)
if(i%k==0) {
sum+=k;
a[j]=k;
j++;
}
if(sum==i) {
for(k=0;k<j-1;k++) printf("%d+",a[k]);
printf("%d",a[k]);
return 1;
}
return 0;
}
void main()
{
int i;
for(i=6;i<=1000;i++)
if(ws(i)==1) printf("=%d\n",i);
}
问题在ws函数里,a[]是记录每一个完素的所有因子,1000以前最大完数496,总共有9个因子,按道理说定义a[10]就够用了,可为什么定义a[10]就是会出错?而把int a[10]改成static int a[10]又正确,为什么?
static 无非是保持a[10]在内存不释放,而且在编译时给赋初值,一定要这样吗?
[[it] 本帖最后由 三断笛 于 2008-6-1 15:29 编辑 [/it]]