/*
Description
输出所有的水仙花数。所谓水仙花数是一个3位的正整数,其各位数字的立方和等于这个数本身。
例如,153是水仙花数,因为1^3+5^3+3^3=153。 ^代表上标
输入格式
无
输出格式
一行一个,由小到大输出所有水仙花数
*/# include <stdio.h>
# include <math.h>int main()
{int i, j, k, l;int sum = 0;for (i = 100; i <= 999; i++,sum = 0){for (j = i; j != 0; j /= 10){k = j % 10;/*研究该关键行代码*/sum = sum + pow(k, 3);//如果把pow(k, 3)转换为float或double或者把 整个表达式强制转换成int类型 则不会出现问题/*也可改成:k = j % 10;l = k * k * k;sum += k*k*k;*//*查看代码执行过程,发现一到含有5的数字就出问题,可以查看执行结果为水仙花数i = 153或 i = 155的那行代码的输出结果已知:pow()函数是用float单精度浮点型进行计算的,返回值为float类型;如果用%d 输出,则会出现精度丢失,返回值为0问题:但是为什么会出现pow(5^3)==124这种情况呢,可查看执行结果为水仙花数i = 153或 i = 155的那行代码的输出结果*/printf(" i = %d,j = %d, k = %d, sum = %d\n",i, j, k, sum);//if (sum > i){break;}}if (i == sum){printf("%d\n", i);}}return 0;
}

在codeblocks中,上述代码输出结果:

查看代码执行过程,发现一到含有5的数字就出问题,可以查看执行结果为水仙花数i = 153或 i = 155的那行代码的输出结果

/* 已解决的疑问1和疑问2:

  1. 如果把一个浮点数赋值给整型变量,则会截断小数部分,只保留整数部分

  2. pow()函数是把数据转换成float单精度浮点型进行计算的,如果用%d 输出,则会出现精度丢失,输出0;

//上述疑问1和疑问2的测试程序:


# include <stdio.h>
# include <math.h>int main()
{int i = 5;double j = pow(5, 3);double k = 2.22;int l = k;printf("用%%d输出整型数据:i = %d\n\n",i);printf("用%%d输出pow(5,3)函数:j = %d\n\n", j);printf("用%%f输出pow(5,3)函数:j = %f\n\n", j);printf("截断浮点型数据 %lf 的小数部分并输出:l = %d\n", k, l);return 0;
}

上述代码,在codeblocks中的输出结果:

已解决疑问:

  1. pow()函数在水仙花数中为何会出现 : k = 5; pow(k, 3) = 124

//疑问3的测试程序:


# include <stdio.h>
# include <math.h>int main(){int k;int j = 0;int sum = 0;k = 5;sum = pow(k, 3);j =  pow(5, 3);printf("k = %d, sum = %d, j = %d\n", k, sum, j);return 0;}

在codeblocks中的输出结果:

在Dev-C++中输出的结果:

在Visual Studio 2019中输出的结果:

原因:
由于编译器和编译环境的差异,仅在codeblocks编译器中会出现 k = 5; pow(k,3) = 124 的问题,而在Dev-C++和VS2019中不会出现该问题,并且该水仙花程序在OJ中能正确得出 pow(k, 3) = 125 并且 AC

C语言实现-水仙花数中的pow(5, 3) = 124 的问题相关推荐

  1. 水仙花数c语言程序解析,C语言求水仙花数代码解析

    原标题:C语言求水仙花数代码解析 水仙花数 "水仙花数"又称为"阿姆斯特朗数".如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为" ...

  2. C语言求水仙花数(自幂数)

    C语言求水仙花数 什么是水仙花数 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身.例如:1^3 + 5^3+ 3^3 = 153 函数实现 代码如下: #define _CRT ...

  3. c语言如何水仙花数,c语言如何解水仙花数

    c语言解水仙花数的方法:首先按[CTRL+N]新建一个源代码:然后输入水仙花数的源代码:接着按[F9]进行编译:最后显示无错误后按[F10]运行即可. c语言解水仙花数的方法: 1.首先什么是水仙花数 ...

  4. 如何用C语言完成水仙花数的搜索

    如何用C语言完成水仙花数的搜索 概念讲解: 什么是水仙花数呢? 所谓的水仙花数是指:一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身. 例如153,370,371等都是水仙花数, ...

  5. 打印出所有的水仙花数javascript_期末C语言特辑 水仙花数

    点击蓝字 关注我们 期末C语言特辑  水仙花数 [问题描述]水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PP ...

  6. 【C语言编程--水仙花数II】

    水仙花数II 前言 一.题目 二.使用步骤 1. 思路 2. 三位数求各个位数 3. 判断是否为水仙花数 三.具体实现 前言 用C语言实现水仙花数II 一.题目 请判断一个数是不是水仙花数.其中水仙花 ...

  7. C语言:水仙花数(daffodil),求出三位数中所有水仙花数

    水仙花数(C语言) 文章目录 水仙花数(C语言) 前言 一.题目 二.解题思路 代码 运行结果 总结 ***根据水仙花数满足的条件找出需要求的对象,这里是各位上的位数.*** 前言 刘汝佳算法书< ...

  8. c语言将水仙花数放入一维数组a中,全国计算机等级考试C语言考试程序设计题(13)...

    在考生目录下,要求程序PROG.C的功能是:将所有的水仙花数保存到一维数组a中. (所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身. 例如:153=1*1*1+5*5*5+3*3*3) #i ...

  9. c语言将水仙花数放入一维数组a中,C语言考试题库及答案(1)

    10.在考生文件夹下,要求程序PROG.C的功能是: 求[m,n]之间既不能被7整除也不能被5整除的整数之和,m和n的值由键盘输入. 例如,如果m和n的值分别为10和20,则计算结果为:106. #i ...

最新文章

  1. Python简单主机批量管理工具
  2. 【CyberSecurityLearning 42】日志记录规则
  3. python字符串转化为long_Java带有运算符的字符串转换为Long型
  4. jzoj4050-寻宝游戏【二分,树状数组,LCA】
  5. C++ setw和setfill
  6. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机
  7. 【新手教程】CE找武林外传基址方法
  8. Java 线程——Timer TimerTask
  9. php json 存储数据格式,文件存储(一):通过 JSON 格式序列化文本数据
  10. 简述74HC595功能
  11. 基于java写的雷霆战机
  12. Android 实现搜索历史(1)
  13. JS CSS 超出字符省略号,获取字符串实际所占长度,显示文字提示tooltip
  14. 数据挖掘(二)预测潜在贷款发放客户
  15. 权限系统--前后端完全分离
  16. 离散数学复习笔记——命题逻辑——永真蕴含式
  17. 通过例子进阶学习C++(四)计算2的64次方,不服写写看
  18. window驱动下载
  19. JBPM 3.2.2动态修改duedate
  20. Spring—拦截器和过滤器介绍

热门文章

  1. AVFoundation播放音视频(五)
  2. 【信号与系统】笔记(3-1)信号的正交分解与傅里叶级数
  3. C语言之最简真分数递增序列
  4. 网络拨测调研分析总结
  5. AI绘画-Midjourney基础1-突破想象的界限:掌握文本引导的图像生成技巧
  6. Matlab 定义函数的几种方法
  7. APP稳定性测试工具monkey
  8. 理查德·费曼谈强人工智能——机器能够像人一样思考吗?
  9. 一、Python3运维自动化运维——psutil 模块详解(超级详细)
  10. android桌面快捷方式