2.1 for循环

程序 2-1 输出1,2,3,4,5,……,n的值

#include<stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int i = 1;
    for (; i <= n; i++)
        printf("%d\n", i);

    return 0;
}

 for的格式为 for(初始化,条件,调整)循环体。

 

例题 2-1 aabb

  输出所有形如aabb的4位完全平方数。

思路一:先找出所有aabb形式的数,在判断是否为完全平方数。这里判断完全平方数方法是先开方,在平方看前后是否相同。。但要注意开方涉及浮点数运算。

程序 2-2 aabb(1)

#include<stdio.h>
#include<math.h>
int main()
{
    int a, b;
    for (a = 1; a <= 9; a++)
        for (b = 0; b <= 9; b++)
        {
        int n = a * 1100 + b * 11;
        int m = floor(sqrt(n) + 0.5);   //floor函数 -----向下取整
        m = m * m;
        if (n == m)
        {
            printf("%d \n", n);
        }
        }

        return 0;
}

floor(double x)函数作用是返回一个不超过x的最大整数,又因为浮点计算的特殊性。经过大量运算整数1可能变为0.9999999,这样floor返回的是0而非1,所以要 +0.5 ,起到排除误差的作用。

 

思路二:先找出所有完全平方数x,再判断x是否是aabb形式。

程序 2-2 aabb(1)

#include<stdio.h>
int main()
{
    int i = 0;
    //这里循环条件为 1,就是代表死循环。退出循环由后面的break控制。
    for (i; 1 ; i++)
    {
        int x = i * i;
        //控制x是四位数
        if ( x < 1000)
            continue;
        if (x > 10000)
            break;
        //外层先判断是否为aa形式
        if (x / 100 % 10 == x /1000)
            //内层判断是否为bb形式
            if (x % 10 == x % 100 / 10)
                printf("%d", x);
    }

    return 0;
}

 

posted @ 2015-07-02 21:00  Traim304  阅读(295)  评论(0编辑  收藏  举报