题目
解决代码及点评
这道题目还是考察循环,通过循环遍历1234~9876,然后将每个数都用算法判断其是否符合条件#include <stdio.h>
#include <stdlib.h>
int f4171(int num)
{
int count=0;
while(num)
{
count++;
num/=10;
}
return count;
} // 这个函数返回位数的转换
int f4172(int num)
{
int sum=0;//要返回的数字 // 计算num有多少位
int n=f4171(num);
int Times=1;
// 计算位数对应的最小值,比如四位是1000
for (int i=1;i<n;i++)
{
Times*=10;
}
// 翻转
while(num)
{
int temp=num%10; // temp保存当前最后一位
sum+=temp*Times; // 将最后一位成语当前的times,累加到和
num/=10; // num去掉一位
Times/=10; // times也去掉一位,准备下次的循环
}
return sum;
}
void main()
{ for (int i=1234;i<9876;i++) // 遍历
{
if (i==4*f4172(i)) // 如果经过转换后,再乘以4等于自身,说明符合条件
{
printf("%4d",i);
break;
}
}
system("pause");
}
代码下载及其运行
代码下载链接:
http://download.csdn.net/detail/yincheng01/6640977
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果