我是C语言的新手,我真的可以为这个问题提供帮助:
整数的丰度定义为数字的完美除数(因子不包括数字本身)除以数字本身。例如,丰度8为(1 + 2 + 4)/ 8 = 7/8。编写一个C函数,该函数使用一个整数作为输入并返回该数字的数量。
据我所知。我可以编译它,但是我一直得到错误的答案。请先帮助并谢谢
#include <stdio.h>
int main()
{
int number, i, sum, abundancy;
sum==0;
abundancy==0;
printf("Enter an integer:");
scanf("%d", &number);
for(i=1; i<=number; i++)
{
if (i!=number)
{
if (number%i == 0)
{
sum+=i;
{
abundancy=sum/number;
printf("The abundancy is %d", abundancy);
}
}
}
}
return 0;
}
答案 0 :(得分:0)
您正在循环中执行abundancy=sum/number;
,这将使您得到错误的结果。这是更改后的代码的正确版本:
#include <stdio.h>
int main()
{
int number, i, sum, abundancy;
sum=0; //USE ASSIGNMENT NOT EQUAL TO OPERATOR
abundancy=0; //USE ASSIGNMENT NOT EQUAL TO OPERATOR
printf("Enter an integer:");
scanf("%d", &number);
for(i=1; i<number; i++) //CHANGED
{
if (number%i == 0) //ONLY SINGLE IF NEEDED
{
sum+=i;
}
}
abundancy = sum/number;
printf("Abundancy is: %d/%d\n",sum,number); //ADDED
printf("abundancy is: %d\n",abundancy);
return 0;
}
即使abundancy
仍将包含底值sum/number
-在打印时应使用float
和%f
作为格式说明符。
输入:
12
输出:
abundancy is: 16/12
abundancy is: 1