C 既是完全平方又是回文的数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void toChars(char str[],int num);
int isHui(char str[]);
int isSquare(int num);

void main()
{
    int num=100;
    while((num++)<1000)
    {

        char str[20];
        int i=0;
        //初始化
        for(; i<20; i++)
        {
            str[i]=0;
        }

        int flagSquare=isSquare(num);
        toChars(str,num);
        //printf(str);
        int flagHui=isHui(str);
        //printf("%d",flagHui);
        if(flagHui && flagSquare){
            printf("%4d,",num);

        }

    }

}

void toChars(char str[], int num)
{
    int p=num;

    int i=0;//数组的下标  //注意 函数呃逆局部变量要手动赋初值
    while(p!=0)
    {
        str[i++]=p%10+48;
        //如果一个char型变量c是数字字符 转为数字  c-'0'
        //对一个数字 8 转为'8' 只需加上48
        p=p/10;
    }

}

int isHui(char str[])
{
    int last=0;//用于标记末位有效位下标
    //找到末尾有效位
    //对了  前面已经将数组所有元素初始化为空字符 (ASCII为0)
    while(str[last]!=0)
    {
        last++;
    }//循环结束时 last所指向的字符ASCII恰为0
    last--;

    int i=0;
    int flag=1;
    while(  i<last  )
    {
        if( str[i]!=str[last] )
        {
            flag=0;
        }
        i++;
        last--;
    }
    return flag;


}

int isSquare(int num)
{
    int i=1;
    int flag=0;
    if(num==1)
    {
        flag=1;

    }
    else
    {
        for(; i<num/2; i++)
        {
            if(num==(i*i))
            {
                flag=1;

            }

        }
    }
    return flag;

}

 

posted @ 2013-03-28 19:50  cart55free99  阅读(233)  评论(0编辑  收藏  举报