C语言题目求解 详细程序

C语言题目求解 详细程序,第1张

#include <stdio.h>

int sumOfFactors(int numA)

{

    int i=1

    int numB

    for(numB = 0 i<=numA/2 i++)

    {

        if(!(numA%i))

            numB+= i

    }

    return numB

}

void main()

{

    int numA,numB,numN

    printf("显示5000以内的亲密数:\n")

    for(numA = 1 numA<=5000 numA++)

    {

        //计算numA的各个因子,同样循环

        numB = sumOfFactors(numA)

        //计算numB的各个因子,同样循环

        numN = sumOfFactors(numB)

        if(numN==numA&&numA<numB)

            printf("%d--%d        ",numA,numB)

    }

}

网页链接

#include<stdio.h>

int main()

{

int a,b,n

int facsum(int n,int *a,int *b)

printf("There are following friendly--numbers pair smaller than 500:\n")

for(a=1a<500a++) /*穷举500以内的全部整数*/

{

n=facsum(n,&a,&b)

if(n==a&&a<=b)

printf("%4dand%d\n",a,b)/*若n=a,则a和b是一对亲密数,输出*/

}

}

int facsum(int n,int *a,int *b)

{

int i

for(*b=0,i=1i<=*a/2i++) /*计算数a的各因子,各因子之和存放于b*/

if(!(*a%i))

*b+=i/*计算b的各因子,各因子之和存于n*/

for(n=0,i=1i<=*b/2i++)

if(!(*b%i))

n+=i

return n

}

呵呵,楼主,你还是多看看函数的用法吧,先理清逻辑。

    while(i<a)

    {

        i=i+1

这样当i=a-1时,会进入循环,然后i加1,变成了a,并参与了运算,因此会得出错误结果。

将以上代码改为:(注意,第二个也要改)

    while(++i<a)

    {

        //i=i+1

应该就正确了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12057956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存