任务和代码
/*
*Copyright ©2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:LP
*完成日期:2017年10月11日
*版 本 号:visual studio 2015
*问题描述:打印所有不超过256(n<256)的其平方具有对称性质的数(回文数)
*/
#include<stdio.h>
int main()
{
int i,a,y,x,t;
for (i = 1; i < 256; i++)
{
a = i*i;
y = (a < 10) + (a < 100) + (a < 1000) + (a < 10000);
switch (y)
{
case 4:
printf("%d\t%d\n", i, a);
break;
case 2:
if (a % 10 == a / 100)
{
printf("%d\t%d\n", i, a);
}
break;
case 0:
if (a % 10 == a / 10000)
{
t = a;
x = a % 10;
a = (a - x * 10000 - x) / 10;
if (a % 10 == a / 100)
{
printf("%d\t%d\n", i, t);
}
}
break;
}
}
return 0;
}
运行结果
心得
没有利用数组来求回文数,因为还没有学习到数组部分的内容,只能使用笨办法,逐个的求出来,利用之前学习到的比较判断真假值来给定SWITCH()的范围。同时利用函数的原理将大于10000的数分解成两部分来求解。