我为以下程序编写了代码,但我不明白如何使用函数。这个问题要求我使用一个返回除数之和的函数。请查看问题和我的代码并尝试帮助我。
问题:
编写一个C程序,查找并打印所有除数的总和 101和110之间的数字.x的除数是那些数字 x除以余数(例如10的除数为1, 2,5和10及其和= 1 + 2 + 5 + 10 = 18,11的除数 是1和11,它们的和= 1 + 11 = 12,等等。 您的程序还应打印具有最大除数之和的数字(101到110)。
你的程序应该使用至少一个名为div_sum的函数 取一个数字并返回它的除数之和。
我的代码:
#include <iostream>
#include <stdio.h>
int main()
{
int i=1, x=101, sum, smax=0, xmax=0;
for (x=101; x<=110; x++)
{ sum=0;
for(i=1; i<=x; i++)
{
if(x%i==0)
sum+=i;
}
if(sum>smax)
{
smax=sum;
xmax=x;
}
printf("The sum of factors of %d = %d\n",x,sum);
}
printf("The number that has the maximum sum of divisors is %d with the sum of %d",xmax,smax);
return 0;
}
答案 0 :(得分:2)
您可以将计算每个x的除数之和的循环移动到单独的函数:
int div_sum(int x) {
int sum = 0;
for(int i=1; i<=x; i++)
{
if(x%i==0)
sum+=i;
}
return sum;
}
并在您的程序中使用它:
for (x=101; x<=110; x++)
{
sum= div_sum(x);
if(sum > amax)
...
}
答案 1 :(得分:2)
对于循环中的每个数字,调用该函数。该函数应包含您在循环中当前拥有的所有代码。
答案 2 :(得分:1)
您的代码实际上非常接近。
这就是我的所作所为:
void div_sum()
{
int sum;
int max_sum = 0;
int max_num;
for (int x = 101; x <= 110; x++)
{
sum = 0;
for (int i = 1; i <= x; i++)
if (x%i == 0)
sum = sum + i;
printf("\nFor the number %d, the sum of the divisors is %d\n", x, sum);
if (sum > max_sum)
{
max_sum = sum;
max_num = x;
}
}
printf("max = %d\n", max_num);
}