原题链接:C语言训练-"水仙花数"问题1
解题思路:
思路1:根据水仙花数的判断条件,判断一个数是不是水仙花数;
思路2:三位数,内的水仙花数只有153,370,371,407,看输入的数是不是等于这三个中的一个;
下面是输出所有水仙花数的代码:
#include <stdio.h>
#include <math.h>
void panduan( int N );
int main()
{
for ( int i = 100; i <= 999; i++ )
{
panduan( i );
}
return(0);
}
void panduan( int N )
{
int sum = 0, N1 = N;
/*if(N<100||N>=1000)
* {return;}
* else*/
while ( N != 0 )
{
sum = sum + pow( (N % 10), 3 );
N /= 10;
}
if ( sum == N1 )
printf( "%d\n", sum );
return;
}注意事项:
默认以文件结束符结束;
输出带换行符;
参考代码:
思路二:
#include <stdio.h>
int main()
{
int N;
while ( scanf( "%d", &N ) != EOF )
{
if ( N == 153 || N == 370 || N == 371 || N == 407 )
printf( "1\n" );
else
printf( "0\n" );
}
return(0);
}思路一:
#include <stdio.h>
#include <math.h>
void panduan( int N );
int main()
{
int N;
while ( scanf( "%d", &N ) != EOF )
{
panduan( N );
}
return(0);
}
void panduan( int N )
{
int sum = 0, N1 = N;
if ( N < 100 || N >= 1000 )
{
printf( "0\n" ); return;
}else
while ( N != 0 )
{
sum = sum + pow( (N % 10), 3 );
N /= 10;
}
if ( sum == N1 )
printf( "1\n" );
else
printf( "0\n" );
return;
}0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h>//判断一个数是否为"水仙花数",所谓"水仙花数"是指这样的一个数: //首先是一个三位数,其次,其各位数字的立方和等于该数本身。例如:371是一个"水仙花数",371=3^3+7^3+1^3. int main() { int a,b,c,d,sum; scanf("%d",&a); if(a>=100&&a<1000) { b=a%10; c=(a-b)/10%10; d=(a-10*c-b)/100; sum=b*b*b+c*c*c+d*d*d; if(sum==a){ printf("1"); }else printf("0"); } else printf("重新输入一个三位数"); return 0; }#include<stdio.h> int main() { int a, b1, b2,b3,key,n; scanf("%d", &a); b1 = a / 100; b2 = (a - b1 * 100)/10; b3 = a - b1*100 - b2*10; if (b1 * b1*b1 + b2 * b2*b2 + b3 * b3*b3 == a) printf("1"); else printf("0"); return 0; }#include <stdio.h> int main() { int n; scanf("%d",&n); if(n==(n/100)*(n/100)*(n/100)+(n%10)*(n%10)*(n%10)+(n/10%10)*(n/10%10)*(n/10%10)) printf("1\n"); else printf("0\n"); return 0; }