帮忙看一下这个求完数的C语言小程序,为什么运行完会崩溃

//一个数如果敲好等于它的因子之和,这个数就称为"完数",
//例如6的因子数为1,2,3,而6=1+2+3,因此6就是"完数"。
//编程找出1000之内的所有完数
#define M 1000
#include <stdio.h>
int main()
{
int k[11]={0};
int i,j,a,n,s;
for(a=2; a<=M; ++a)
{
n=0;
s=a;
for(i=1; i<a; ++i)
if(a%i == 0) //如果i是a的因子
{
++n;
s=s-i;
k[n-1]=i;
}
if(s == 0)
{
printf("n = %d\n",n);
printf("%d, its factors are: ",a);
for(j=0; j<n; ++j)
{
printf("%d ",k[j]);
}
printf("\n");
}

}

return 0;
}
//帮忙看一下这个求完数的C语言小程序,为什么运行完会崩溃

第1个回答  2015-02-26

没有啊 

追问

可是我的不行呀,

追答

去掉M后面的等号

追问

哪个等号?麻烦您在图上标注一下,我没找到。

本回答被网友采纳
第2个回答  2015-02-26
数组过界·~~~~
只要把int k[11]={0}; //改成int k[1000]={0};

即可~~本回答被提问者采纳
相似回答