无法在C程序中使用外部变量值进行循环

时间:2016-01-25 16:14:31

标签: c loops

我正在学习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中的很多函数,我不能使用数学函数进行这个赋值。 任何帮助,将不胜感激。一整天都在搜索这个但是听不懂的。

最值得赞赏的是解决问题的基本方向。感谢。

3 个答案:

答案 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;