知识基础:


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 条评论

量子纠缠 2年前 回复TA
以为是把个十百三个数打出来,看了才发现是打一个数,一开始是手动输入,才发现是要遍历所有的三位数,【笑哭】


#include<stdio.h>
#include<math.h>//使用pow函数表示某个数的几次方,需要引入math头文件
int main()
{
    for(int num=100;num<=999;num++){
      
    //个位数
    int g;
    g=num%10;
    //十位数
    int s;
    s=(num%100)/10;
    //百位数
    int b;
    b=num/100;
    //按要求判断
    if((pow(g,3)+pow(s,3)+pow(b,3))==num){
        printf("%d\n",num);
    }
    }
    return 0;
    system("pause");
}
江雪沉月 2年前 回复TA
写着写着才发现C的立方函数头文件忘了,就直接写了函数
#include<stdio.h>
int Sn(int a);
int main()
{
	int a,b,c,d;
	for(int i=100;i<=999;i++)
	{
		a=(i/100);
		b=((i%100)/10);
		c=((i%100)%10);
		d=Sn(a)+Sn(b)+Sn(c);
		if(d==i)
			printf("%d \n",i);
	}
	return 0;
}
int Sn(int a)
{
	return a*a*a;
}
2年前 回复TA
@苏沐橙 为啥我这不能实现if里的要求呀
2年前 回复TA
@苏沐橙 int main() {     int i,j,k,a=0; for(i=0;i<=9;i++) { for(j=0;j<=9;j++) { for(k=0;k<=9;k++) {     a=i*i*i+j*j*j+k*k*k;     if((100>=a&&a<=999)&&(a==(i*100+j*10+k)));     printf("%d
",a); } } } return 0; }
lljxzk1314 2年前 回复TA
#include<stdio.h>
#include<math.h>
int main()
{
    int num,bai=0,si=0,ge=0;
    
    for(num=100;num<999;num++)
    {
        bai=num/100;
        si=num%100/10;
        ge=num%10;
        if(num==(pow(bai,3)+pow(si,3)+pow(ge,3)))
        {
            printf("%d\n",num);
        }
    }
    return 0;
}
Fatasy 2年前 回复TA
#include<stdio.h>
int main()
{
	int i = 100;
	for (i; i <= 999; i++)
	{
		if (i==NumAdd(i))
			printf("%d\n", i);
	}
	return 0;
}
int NumAdd(int i)
{
	int sum = 0;
	for (int k = 0; k < 3; k++)
	{
		sum= sum+(i % 10)* (i % 10) * (i % 10);
		i = i / 10;
	}
	return sum;
}
oula 2年前 回复TA
返回1就是水仙花数,其他的自己写吧
char Check(int data)
{
    int a = data / 100;
    int b = data % 100 / 10;
    int c = data % 10;

    if(pow(a ,3) + pow(b ,3) + pow(c ,3) == data)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
Kaiiiiiix 2年前 回复TA
#include<stdio.h>
#include<math.h>
int main(void)
{
	int a,b,c,d;
	for(a=100;a<1000;a++)
	{
		b=a/100;
		c=a/10%10;
		d=a%10;
		if(a==pow(b,3)+pow(c,3)+pow(d,3))
		printf("%d\n",a);
	}
	return 0;
 }
七六大順 3年前 回复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)%10),3)+pow((i%10),3))
   	printf("%d\n",i);
   }
	return 0;
 }
苏沐橙 4年前 回复TA
我用了4个for,,,可能是最笨的方法了
#include<stdio.h>

int main()
{
    int i, j, k, num;
    for(num=100; num<1000; num++)
    {
        for(i=1;i<=9;i++)
        {
            for(j=0; j<=9; j++)
            {
                for(k=0; k<=9; k++)
                {
                    if(num==i*i*i+j*j*j+k*k*k&&num==i*100+j*10+k)
                        printf("%d\n",num);
                }
            }

        }
    }
    return 0;
}