首页 > 编程语言 >c语言编程题目:水仙花数

c语言编程题目:水仙花数

时间:2024-03-25 21:33:58浏览次数:33  
标签:遍历 题目 int sum 编程 while 位数 100 水仙花

题目:水仙花数是指一个N位正整数(N>=3),它的每位上的数字的N次幂之和等于它本身。例如:153 = 1^3 + 5^3 + 3^3。要求:计算所有N位水仙花数。给出一个正整数N(3 <= N <= 7),按递增顺序输出所有水仙花数,每个数字占一行。


编程思路分析:

  1. 输入一个正整数N。N为位数,N=3就表明是3位数。
  2. 判断N位数中有多少水仙花数。
  3. 输出水仙花数,并注意格式。

重点运算思路:

  1. 一共有个部分。第一部分:怎么把n = 3和100联系起来,即将位数转换为具体的数字(3 → 100)。
    可以用while循环,加上变量就可以解决。
  2. 第二部分如何遍历所有的数字?
    用while循环即可。
  3. 第三部分:在遍历中怎么计算每位数字的N次幂,并且得出它们的n次幂之和?
    可以再次使用一个循环,来分解整数,并且再用一个循环来计算次幂。每分解一个位数就计算它的N次幂,并且先加入到一个sum变量中,接着再计算下一个位数,以此类推。

实现代码如下:

#include <stdio.h>

int main(){
    
    int n;
    scanf("%d", &n);    
    
    //遍历所有的三位数
    //若n = 3,则要遍历100-999.
    //第一个难点:怎么把n = 3和100联系起来
    int i = 1;
    int t = 1;
    while(i<n){
        t *= 10;
        i++;
    }
    //得到t = 100.
    printf("t = %d\n", t);
    //第二个难点:如何遍历?
    i = t; //i = 100
     //t = 1000
    while(i < t*10){
        //接下来要分解i的每一位数,算出它的n次幂,然后再求和求起来
        //※难点三:怎么算一个数的n次幂?
        int x = i;//用x变量记录i,因为待会儿会分解i。
        int sum = 0;//sum = 分解后每一位数n次幂之和。
        //用循环来解决
        do {
            int d = x%10;
            x /= 10;
            //x的n次方怎么算?
            int cnt = 1;
            int p = d;
            while( cnt<n ){
                p *= d;
                cnt ++;
            }
            
            sum += p;
        }while(x>0);
            
        if(sum == i){
            printf("%d\n", sum);
        }
        
        i++;
    }
    
    return 0;
}

标签:遍历,题目,int,sum,编程,while,位数,100,水仙花
From: https://blog.csdn.net/wOLF_Aaron/article/details/137025268

相关文章

  • Java并发编程:第六章 阻塞队列
    文章目录一、BlockQueue1、特点2、阻塞队列常用方法二、常见的BlockingQueue1、介绍2、ArrayBlockingQueue3、LinkedBlockingQueue4、PriorityBlockingQueue5、LinkedTransferQueue6、SynchrousQueue7、DelayQueue一、BlockQueue1、特点阻塞队列与普通队列(ArrayDe......
  • Java并发编程学习
    1.4wait()与notify例如消息队列生成和消费消息时候,可以用 wait(), notify通知对方wait和notify必须在synchronized方法里。1) wait释放当前线程的锁,线程进入等待状态,直到其他线程调用该对象的notify2)notify其他随机一个线程对应的等待状态解除。可以竞争当......
  • 基于java的少儿编程网上报名系统—论文
    少儿编程网上报名系统的开发过程中,采用B/S架构,主要使用java技术进行开发,中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发环境。该少儿编程网上报名系统包括用户和管理员。其主要功能包括管理员:首页、个人中心、用户管理、课程类型管理、课程信息管理、课程购买管理......
  • 每日面经分享(测试开发经典场景题目)
    1.面试测试场景题目,回答的测试点有哪些?a.功能测试点:确保所测试的功能按照设计要求正常工作。例如,对于电影票预订网站的座位选择功能,测试点可能包括选择连续座位、选择非连续座位、座位已售等情况。b.边界测试点:测试输入值的边界情况,以验证系统在极限条件下的表现。例如......
  • 测试优先编程思想
    Test-FirstProgramming什么是软件测试?Theprocessofcheckingthequality,functionality,andperfomanceofasofwareproductbeforelaunching.1Theactofexamingtheartifactsandthebehaviorofthesoftwareundertestbyvertificationandvalidat......
  • Dawwin首位人工智能编程师,未来又会怎么样?
    Darwinai是一家快速发展的视觉质量检测公司,为制造商提供端到端解决方案,以提高产品质量并提高生产效率。该公司的专利可解释人工智能(XAI)平台已被众多财富500强公司采用,可以轻松集成值得信赖的人工智能并提供可见的结果。该公司的技术基于滑铁卢大学多年的杰出奖学金,专注于先进制造......
  • 互联网编程必读-有效的现代C++
    本书介绍    掌握C++11和C++14不仅仅是熟悉它们引入的特性(例如,自动类型声明、移动语义、lambda表达式和并发支持)。挑战在于学会有效地使用这些特性—这样你的软件才是正确的、高效的、可维护的和可移植的。这就是这本实用书的用武之地。它描述了如何使用C++11和C++14......
  • 0编程经验的初学者,该怎么学Python?要注意哪些隐秘的错误认知?
    对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,而有特别明显的两个错误认知是:错误认识一:一些初学者认为python很简单,就以为编程很简单。错误认识二:没有学好基础知识,听说django很火,就开始学django开发we......
  • 简单mips题目尝试
    0x01前言mips是另一种不同的架构何指令集,推荐使用ghidra和ida插件进行反汇编,其中的知识我就不多赘述,因为我也一知半解Orz0x02简单的ctf题目尝试[UTCTF2020]babymips首先利用ghidra反汇编一下程序看看,按g可以跳转main函数看看 发现具体逻辑将一段东西赋值给austak_68,然......
  • Java语言程序设计实验题目:编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出
    题目描述编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出现的频率由高到低进行输出。例如:文档“HellowordHello”的统计结果为: Hello:2次 word:1次思路分析1.处理文档:先用nextLine()将文段输入,存储在字符串file,再调用split()方法将字符串分割成一个......