函数返回结构中的错误 #包括 #包括“友好号码.h” int i,j; 结构友好 { 友好对; 整数大小; }; main() { int startnum=250; int-endnum=1000; 结构友好*ami; ami=友好配对(开始、结束); printf(“{”); for(int i=0;isize;i++) { printf(“{%d,%d}”,ami->anicablepair[i][0],ami->anicablepair[i][1]); } printf(“}”); } 友好*友好对(int startnum,int endnum) { int size=0; int因子(int); 友好记录; 对于(i=startnum;i=startnum;j--) { if((求和因子(i)=j)和&(求和因子(j)=i)和&(i!=j)) { 记录。友好对[size][0]=i; 记录。友好对[size][1]=j; 大小++; }}} 记录。大小=大小; 返回记录; } 整数因子(整数) { 整数和=0; 对于(i=1;i
您将返回一个(友好*)-指向友好的指针,但您的函数将创建一个(友好的)(而不是一品脱到一) 而不是宣布函数返回结构中的错误 #包括 #包括“友好号码.h” int i,j; 结构友好 { 友好对; 整数大小; }; main() { int startnum=250; int-endnum=1000; 结构友好*ami; ami=友好配对(开始、结束); printf(“{”); for(int i=0;isize;i++) { printf(“{%d,%d}”,ami->anicablepair[i][0],ami->anicablepair[i][1]); } printf(“}”); } 友好*友好对(int startnum,int endnum) { int size=0; int因子(int); 友好记录; 对于(i=startnum;i=startnum;j--) { if((求和因子(i)=j)和&(求和因子(j)=i)和&(i!=j)) { 记录。友好对[size][0]=i; 记录。友好对[size][1]=j; 大小++; }}} 记录。大小=大小; 返回记录; } 整数因子(整数) { 整数和=0; 对于(i=1;i,c,pointers,function,structure,C,Pointers,Function,Structure,您将返回一个(友好*)-指向友好的指针,但您的函数将创建一个(友好的)(而不是一品脱到一) 而不是宣布 #include<stdio.h> #include "amicablenumber.h" int i,j; struct amicable { int **amicablePair; int size; }; main() { int startnum = 250; int endnum = 1000; struct amicable* a
#include<stdio.h>
#include "amicablenumber.h"
int i,j;
struct amicable
{
int **amicablePair;
int size;
};
main()
{
int startnum = 250;
int endnum = 1000;
struct amicable* ami;
ami = getAmicablePairs(startnum, endnum);
printf("{");
for(int i = 0; i<ami->size; i++)
{
printf("{%d, %d}",ami->amicablePair[i][0], ami->amicablePair[i][1]);
}
printf("}");
}
amicable *getAmicablePairs(int startnum,int endnum)
{
int size=0;
int sumfactors(int);
amicable record;
for(i=startnum;i<=endnum;i++)
{
for(j=endnum;j>=startnum;j--)
{
if((sumfactors(i)==j)&&(sumfactors(j)==i) && (i!=j))
{
record.amicablePair[size][0]=i;
record.amicablePair[size][1]=j;
size++;
}}}
record.size=size;
return record;
}
int sumfactors(int number)
{
int sum=0;
for(i=1;i<number;i++)
{
if(number%i==0)
sum +=i;
}
return sum;
}
友好记录;
您需要执行以下操作(或同等操作):
友好的*记录=(友好的*)马洛克(友好的);
然后通过“记录->”而不是“记录”进行访问
注意:使用上述方法,您需要在完成上述分配后释放()该分配。
getAmicablePairs
声明返回指向友好的指针:
amicable *record = (amicable *) malloc(sizeof(amicable));
amicable *getAmicablePairs(...)
但是您尝试返回一个友好的:
amicable *record = (amicable *) malloc(sizeof(amicable));
amicable *getAmicablePairs(...)
而不是指向一个的指针
请注意一个“明显的”修复,即返回指向记录的指针:
return record;
不起作用,因为当getAmicablePairs
返回时,您将返回一个指向即将消失的变量的指针。相反,您需要使用malloc
创建一个记录并返回该值;类似于这样:
return &record;
您需要将所有记录更改为记录->
还要注意的是,您正在写入结构的amicablePair
成员,而没有分配它-这将导致崩溃。您需要malloc
该amicablePair
以及amicable
我也会标记该语言:)顺便说一句,格式很混乱。你可以用正确缩进的代码得到更多的响应…没有人想处理你的代码,我们只是想阅读并能够提供帮助。