【发布时间】:2015-12-15 02:50:44
【问题描述】:
我试图解决这个棘手的问题,但由于某种原因,我的代码做错了什么……我不完全知道为什么,但我会尽可能多地解释。
连续产品: 编写一个读取正整数的程序 来自标准输入并验证它是否等于三的乘积 自然数和连续数。例如,数字 120 等于 到 4x5x6,至于数字 90 没有任何三个连续的自然 乘积为 90 的数字。您的程序应生成输出 'S' 如果有 3 个连续自然数的乘积是 读取的值,如果没有,则为“N”。
Input
120
Expected Output
"S"
Input
60
Expected Output
"S"
Input
80
Expected Output
"N"
Input
120
Expected Output
"S"
这是我的代码:
#include <stdio.h>
int main(){
int int1,i,count=10,j,k,w=0;
scanf("%i",&int1);
for (i = 1; i <= count; ++i)
{
for (j = 1; j <= count+1; ++j)
{
for ( k = 1; k <= count+2; ++k)
{
if ((i==j+1 && i==k+2) && (i*j*k==int1)){
w=1;
}
}
}
}
if (w==0)
{
printf("N");
}
else{
printf("S");
}
}
所以基本上这样做是我有 3 个循环,它们将以k*i*j 形式生成随机数...并检查我们是否得到了我们想要的(三个自然数和连续数的乘积)。这是作业。
【问题讨论】:
-
您的过程似乎无效,请尝试查找素因数,然后检查是否可以使用不同的倍数组合找到连续数字。
-
问题是什么?
-
您希望您的程序不输出什么?它似乎适用于您提供的示例。
-
是的,我知道,这正是我很困惑的原因......