2019-05-08 水仙花数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2010


思路:1.定义两个范围在100-999的整数吗m,n,从m开始分解三位数的每一个组成数字,用for语句进行判断循环,判断它的各位数字的立方和是否等于其本身;

2.在范围里如果有多个数,则进行排序,这个就利用for循环时输出即可;

3.定义一个flat,如果有一个输出,则flat=0,在下一个输出的时候flat就会变为输出空格,用这个来满足题目中输出的数据之间用一个空格隔开。

代码:

#include "stdio.h"

void main()

{

  int m,n,a,b,c,i,sum,flag,flat;

  while(scanf("%d %d",&m,&n)!=EOF)

  {

    if(m<100||m>n||n>999) break;

      {  sum=0;

        flag=0;

        flat=1;

        for(i=m;i<=n;i++)

          {

          a=i/100;

          b=i/10%10;

          c=i%10;

          sum=a*a*a+b*b*b+c*c*c;

          if(sum==i)

            {

                if(flat)

                    flat=0;

                else

                    printf(" ");


                printf("%d",i);

                flag=1;

                }

          if(flag==0&&i==n)

          {

              printf("no");

          }

          }

          printf("\n");

      }

  }

}

小结:这道题重点是我学到了一个新的可以让输出的数据用一个空格隔开的方法。就是利用定义一个flat,然后判断它的与否以及利用if语句,成功地让输出的数据之间都有一个空格,而最后一个数据输出之后不会再有空格。如果用以前那种方法的话,在printf语句里加个空格,那么就会在输出最后一个数据之后还会有空格,这样就不符合题目要求。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容