LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 933|回复: 5

计算1000以内完数代码,用gcc编译通过,执行时出现段错误,请各位大虾指点

[复制链接]
发表于 2005-8-14 13:06:26 | 显示全部楼层 |阅读模式

  1. #include<stdio.h>
  2. main()
  3. {
  4.         int k[10],a,i,n=0,s;
  5.         for(a=2;a<=1000;a++)
  6.         {
  7.                 s=a;
  8.                 for(i=1;i<=a;i++)

  9.                         if( (a%i)==0 )
  10.                         {
  11.                                 n++;
  12.                                 s=s-i;
  13.                                 k[n]=i;
  14.                         }

  15.                 if(s==0)

  16.                  {       printf("\n%d is a wangshu,it is :",a);
  17.                         for(i=1;i<n;i++)
  18.                                 printf("%d,",k[i]);
  19.                         printf("%d\n",k[n]);
  20.                  }

  21.         }

  22. }
复制代码
发表于 2005-8-14 13:40:47 | 显示全部楼层
n>=10的时候, k[n]=i;这里就出问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-15 21:47:25 | 显示全部楼层
在计算1000以内的完数中不可能出现n>=10的情况吧
回复 支持 反对

使用道具 举报

发表于 2005-8-15 22:35:29 | 显示全部楼层
在for(a=2;a<=1000;a++)循环内应重新初始化n=0
回复 支持 反对

使用道具 举报

发表于 2005-8-15 22:51:30 | 显示全部楼层
不仅是初始化为0就行了,10 是肯定不够大的
另外,不知道你为什么喜欢从下标1开始使用数组,这可不是什么好习惯
回复 支持 反对

使用道具 举报

发表于 2005-8-16 00:05:39 | 显示全部楼层
完数是啥?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表