Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序返回友好数算法中的-1073741819_C - Fatal编程技术网

C程序返回友好数算法中的-1073741819

C程序返回友好数算法中的-1073741819,c,C,我正试图用C做一个程序来寻找小于n的友好数 友好数是两个相互关联的不同数,每个数的适当因子之和等于另一个数 友好号码220284的示例;220的真除数为1、2、4、5、10、11、20、22、44、55和110,其和为284;284的真除数是1,2,4,71和142,其中和是220 到目前为止,我已经计算了每个数字的除数之和,并将它们放入一个数组s中 s[0]=0,s[1]=1;s[2]=1+2=3,s[3]=1+3=4,依此类推 但是我的程序崩溃了,调试器里什么都没有。所有内容都打印得很好,但

我正试图用C做一个程序来寻找小于n的友好数

友好数是两个相互关联的不同数,每个数的适当因子之和等于另一个数

友好号码220284的示例;220的真除数为1、2、4、5、10、11、20、22、44、55和110,其和为284;284的真除数是1,2,4,71和142,其中和是220

到目前为止,我已经计算了每个数字的除数之和,并将它们放入一个数组s中

s[0]=0,s[1]=1;s[2]=1+2=3,s[3]=1+3=4,依此类推

但是我的程序崩溃了,调试器里什么都没有。所有内容都打印得很好,但毕竟返回了-1073741819,程序崩溃了

#include <stdio.h>
#include <stdlib.h>
int sumofdivizor(int nr)
{
  //nr=number,s=sum of the divisors of nr
  int i,s=0;

  for(i=1;i<=nr;i++)
  {
    if(nr%i==0)
     {
      s=s+i;
      }
      else continue;
  }

  return s;
}

int main()
{
    int *s,n,i;

    s =(int*)malloc(n*sizeof(int));
    s[0]=0;
    printf("Print a limit number\n");
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
      *(s+i)=sumofdivizor(i);
    }
    for(i=0;i<n;i++)
      printf("s[%d]=%d\n",i,s[i]);

    return 0;
}
您正在使用n的值来决定分配多少空间。但是你还没有给n赋值


您正在使用n的值来决定分配多少空间。但是你还没有给n赋值。

一个不友好的朋友到底是什么?!那就像一个和平战士,或者一个仁慈的政治家?。。“你没有见过我的邻居。”KerrekSB,谢谢你,我已经编辑了这个帖子。“KerrekSB,我相信一个不友好的朋友的例子是C++中的朋友关键词。@ LundinI,如果你在需要的时候找不到朋友,也许你不知道ADL:—一个不友善的朋友到底是什么?”那就像一个和平战士,或者一个仁慈的政治家?。。“你没有见过我的邻居。”KerrekSB,谢谢你,我已经编辑了这个帖子。“KerrekSB,我相信一个不友好的朋友的例子是C++中的朋友关键词。@ LundinI,如果你在需要的时候找不到朋友,也许你不知道ADL:-谢谢,戴维!这就是问题所在。我刚刚学到了一些关于动态内存分配的知识,但我不太清楚。@AlexB:这太令人惊讶了。我更希望你了解因果关系,或者做事的顺序,而不是动态内存分配。在这个问题上,真正的malloc电话完全是在转移注意力。谢谢你,大卫!这就是问题所在。我刚刚学到了一些关于动态内存分配的知识,但我不太清楚。@AlexB:这太令人惊讶了。我更希望你了解因果关系,或者做事的顺序,而不是动态内存分配。在这个问题上,实际的malloc调用完全是在转移注意力。
int *s,n,i;

s =(int*)malloc(n*sizeof(int));