知识基础:


for(表达式1;表达式2;表达式3){若干语句}//for循环语句及其格式


思路:水仙花数为三位数,所以循环从100开始,到999结束,i为int型变量,所以i/100的值也是一个int型变量(整数)(注:C语言的取整不是四舍五入,是直接舍去小数),i/100就是百位上的数,i和100求余就是剩下的两位数,i%100之后再除以10同理会得到十位上的数,原数字再和10求余就是个位上的数


答案

#include<stdio.h>
int main(){
	int i;
	for(i=100;i<=999;i++){
		if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
			printf("%d\n",i);
	}
	return 0;
}

注:程序结束return 0;不可省。

点赞(4)
 

0.0分

69 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 44 条评论

丙夜 4年前 回复TA
@紫尘 这个题没有输入
紫尘 5年前 回复TA
@紫尘 运行通过 但是答案错误 ???
紫尘 5年前 回复TA
#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	int i=1;
	int frist=1;
	while(i<n){
	    frist *=10;
	    i++;
	}
	i=frist;
	while(i<frist*10){
	    int t=i;
	    int sum=0;
	    do{
	        int d=t%10;
	        t/=10;
	        int p=d;
	        int j=1;
	        while(j<n){
	            p *=d;
	            j++;
	        }
	        sum +=p;
	    }while(t>0);
	    if(sum==i){
	        printf("%d\n",i);
	    }
	    i++;
	}
	return 0;
}
黑飞蛾 5年前 回复TA
#include <stdio.h>
#include<math.h>
int main()
{

	for (int i = 100; i <= 999; i++)
	{
		if (i == (pow(i / 100, 3) + pow(i % 10, 3) + pow(i / 10 % 10, 3)))
			printf("%d\n", i);
	}
	return 0;
}