用C语言实现输出水仙花数
什么是“水仙花数”?
所谓“水仙花数”是指一个n位数,其各位数字n次方之和等于该数本身。 例如:153=1 ^3 +5 ^3 +3 ^3
如何求解水仙花数?
思路:
步骤1:先计算出数i的位数,用count保存。
步骤2:获得 i 的每一位,并将它的每一位count次方求和后保存在sum中。
步骤3:判断当前的sum和数i是否相等,若相等则输出数i,这是的 i 就是水仙花数。
pow函数:必须加入头文件:#include <math.h>
pow() 函数用来求 x 的 y 次方,x、y及函数值都是double型
其原型为:double pow(double x, double y); pow(x,y):
用来计算以x 为底的 y 次方值,然后将结果返回。
代码:
#include<stdio.h>
#include<math.h>
int main() {
for (int i = 0; i <= 100000; i++) {
int temp = i;
int count = 0;
//计算i的位数
while (temp != 0) {
count++;
temp /= 10;
}
temp = i;//此时让temp变回i
//求temp的每一位
int sum = 0;
while (temp != 0) {
sum += pow(temp % 10, count); //计算temp的最后一位数字的count次方,并将其加到sum中。
//tmp % 10 取 tmp 的最后一位数字,pow 函数计算该数字的 count 次方。
temp /= 10;
}
//判断当前sum和i是否相等,如果相等就输出i
if (sum == i)
printf("%d ", i);
}
return 0;
}
求sn=a+aa+aaa+aaaa+......的值
题目:
输入正整数a和n,编程 s=a+aa+aaa+aaaa+aa...a(n个a)的值。
例如:
a=2 ,n=5时,表示计算由2组成的数的和:2+22+222+2222+22222 ( 此时 共有5个数相加)。
输入:5 3 表示3个由5组成的数相加,即计算5+55+555的值,输出:615
输入:5 4 表示计算5+55+555+5555的值,输出:6170
提示:
本题,我们知道循环次数,所以使用for循环。
思考:给我们一个数a,我们怎么才能输出aa。比如,给我们数2,我们可以让2*10再+2,即可得到22.解决这一问题,我们就可以开始编写程序了。
#include<stdio.h>
int main()
{
int a,n;
int t = 0;
int sum = 0;
scanf("%d %d",&a,&n);
for(int i = 1;i<= n;i++)
{
t *= 10;
t += a;
sum += t;
}
printf("%d ",sum);
return 0;
}
祝大家生活愉快。