大一新生学不明白c语言了!
程序功能:输入两个正整数m和n(1<=m<=n<=10000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。要求定义并调用函数factorsum(i),它的功能是返回i的因子和。例如:factorsum(12)的返回值是16
非完数输出循环1,真的学不明白。
#include
int main()
{
int m, n, i;
int fac(int i);
printf("输入两个正整数m和n(1<=m<=n<=10000):");
scanf_s("%d%d", &m, &n);
printf("%d到%d之间的所有完数是:",m,n);
i = m;
while (i <= n)
{
if (i = fac(i))/*调用函数*/
printf("%d ", i);
i++;
}
return 0;
}
int fac(int a)
{
if (a == 1) return a;
int sum = 0;
for (int i = 1; i < a; i++) {
if (a % i == 0)
sum = sum + i;}
if (a == sum) return sum;
}
改动处见注释,供参考:
#include <stdio.h>
int main()
{
int m, n, i;
int fac(int i);
printf("输入两个正整数m和n(1<=m<=n<=10000):");
scanf("%d%d", &m, &n);
printf("%d到%d之间的所有完数是:",m,n);
i = m;
while (i <= n)
{
if (i == fac(i))//调用函数 if (i = fac(i)) 修改
printf("%d ", i);
i++;
}
return 0;
}
int fac(int a)//函数factorsum(i),它的功能是返回i的因子和
{
//if (a == 1) return a; 修改
int sum = 0;
for (int i = 1; i < a; i++) {
if (a % i == 0)
sum = sum + i;
}
//if (a == sum) 修改
return sum;
}