我正在学习C编程课程,第一项任务是找到给定范围内的完美正方形数。 我试图获得第一个完美的平方根,但是当我尝试将第一个平方根分配给变量时,我无法这样做,它总是显示为0.
这是我写的程序:
#include<stdio.h>
void main()
{
float y= 0;
float k = 1.0;
float n;
int i=0;
int first_sqrt;
first_sqrt = 0;
printf("enter number: \n");
scanf("%f",&n);
// finding the first perfect square
for(y = 0; y<=10000; y++)
{
while((k*k - n)>0.0001 || (n - k*k)> 0.0001)
{
k = (k + n/k) / 2;
//printf("%f\n", k);
}
i = (int)k;
if(i*i == n)
{
printf("perfect squareroot: %d\n", i);
i = first_sqrt;
y = 10001;
//break;
}
else
{
printf("not perfect square: %f\n", n);
n = n+1;
}
}
printf("first perfect square root: %d\n", first_sqrt);
}
我很抱歉发布整个程序,但我不知道问题可能在哪里。这是第一周的第一个任务,所以我还没有理解C中的很多函数,我不能使用数学函数进行这个赋值。 任何帮助,将不胜感激。一整天都在搜索这个但是听不懂的。
最值得赞赏的是解决问题的基本方向。感谢。
答案 0 :(得分:1)
表达式i = first_sqrt;
将first_sqrt
分配给i
而不是i
分配给first_sqrt
。将其更改为first_sqrt = i;
。除此之外,您可以从//break;
删除评论。
答案 1 :(得分:1)
反转这一行
i = first_sqrt;
到first_sqrt = i;
答案 2 :(得分:1)
你混淆了一项任务。这样:
i = first_sqrt;
应该是:
first_sqrt = i;