注册 登录
编程论坛 C语言论坛

关于函数名带来的问题

小星在北方 发布于 2020-11-16 15:39, 1250 次点击
#include<stdio.h>
int Facsum(int n)
 {
    int sum = 0;
    for (int i = 1; i < n; i++ )
    {
        if ( n % i == 0 )
        sum += i;
    }
    return sum;
  }
   
   
int main()
{
    int i, flag=0, m, n, sum1;
        scanf("%d%d", &m, &n);
    for (i = m; i <= n ;i++)
    {
        sum1 = Facsum(i);
          if (i == Facsum(sum1) && i < sum1)
          {
            printf("%d %d\n",i,sum1); flag++;
        }
    }
    if ( flag == 0) printf("No answer");
    return 0;
}
只有本站会员才能查看附件,请 登录

我把函数名大写F改成小写f就对了,不知道为什么,还请大家能为我指指错误
6 回复
#2
lin51616782020-11-16 15:45
标识符区分大小学 应该在学声明变量的时候就强调过了
#3
风过无痕19892020-11-16 20:54
回复 楼主 小星在北方
函数名无论是大写还是小写,只要在整个程序中能够统一,就是没有问题的。

如果方便的话,能不能将程序的功能透露一下?

你的程序,我运行都是一个输出:No answer,我的输入是:21 99
#4
小星在北方2020-11-17 13:24
回复 3楼 风过无痕1989
输入两个正整数m和n,顺序输出m到n之间的所有友好数对。
如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对,因为
1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210
1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1184
要求程序定义一个facsum ()函数和一个main()函数,facsum ()函数计算并返回n的所有正因子之和,其余功能在main()函数中实现。
int facsum (int n)
{
//计算n的所有正因子之和sum,本函数返回sum
}
#5
小星在北方2020-11-17 13:37
以下是引用小星在北方在2020-11-17 13:24:56的发言:

输入两个正整数m和n,顺序输出m到n之间的所有友好数对。
如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对,因为
1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210
1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1184
要求程序定义一个facsum ()函数和一个main()函数,facsum ()函数计算并返回n的所有正因子之和,其余功能在main()函数中实现。
int facsum (int n)
{
//计算n的所有正因子之和sum,本函数返回sum
}

只有本站会员才能查看附件,请 登录
#6
小星在北方2020-11-17 13:42
回复 2楼 lin5161678
谢谢谢谢
#7
风过无痕19892020-11-17 17:35
回复 5楼 小星在北方
程序代码:

#include<stdio.h>
int Facsum(int n)
{
    int i, sum = 0;
    for (i = 1;i < n;i++)
    {
        if (n % i == 0)sum += i;
    }
    return sum;
}
int main()
{
    int m, n, i, flag = 0, sum = 0;
    scanf("%d%d", &m, &n);
    for (i = m;i <= n;i++)
    {
        sum = Facsum(i);
        if (Facsum(sum) == i && sum > i)
        {
            flag = 1;
            printf("%d %d\n", i, sum);
        }
    }
    if (flag == 0)
        printf("No answer\n");
    return 0;
}
1