当前位置:网站首页>C语言初级—水仙花数
C语言初级—水仙花数
2022-08-02 14:03:00 【iccoke】
判断一个数是不是水仙花数
基本思想:判断一个数是不是水仙花数,首先要知道什么是水仙花数
我们将一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身的数称为水仙花数
例如:153=1^3+5^3+3^3
在编写程序之前,我们要了解水仙花数的限制条件
首先水仙花数是一个三位数,即其应该满足100~999
其次就是满足水仙花数的基本特征
得到判断水仙花数的函数体如下
result += (int)pow(i % 10, 3);
i = i / 10;这是水仙花数的判断基本函数体
接下来要完成要求我们还要用函数将其封装起来,依据要求,返回值是正确或者错误
因此我们将函数返回值类型定义为bool类型
得到以下的判断函数体
bool isflower(int num) {
int result = 0;
int i;
bool flag = false;
i = num;
while (i !=0) {
result += (int)pow(i % 10, 3);
i = i / 10;
}
if (result == num)
{
flag = true;
}
return flag;
}其中 i=num;的作用是将num的值记录并保存下来,防止在循环前后使用同一个变量会导致最终的结果产生错误。
在完成函数体后,接下来就是在主函数中调用即可
具体代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
bool isflower(int num) {
int result = 0;
int i;
bool flag = false;
i = num;
while (i !=0) {
result += (int)pow(i % 10, 3);
i = i / 10;
}
if (result == num)
{
flag = true;
}
return flag;
}
int main() {
int num;
printf("请输入一个三位数\n");
scanf("%d", &num);
bool result = isflower(num);
if (result == true) {
printf("这是一个水仙花数\n");
}
else {
printf("这不是一个水仙花数\n");
}
return 0;
}调用函数时用一个与函数返回值相同的值接收函数返回结果
再用选择语句输出结果
我们用153作为测试用例来检验程序正确与否

这里显示153是一个水仙花数
拓展延伸
以此为基础,我们可以设计一个程序,一次输出所有的水仙花数
只需要加上100~999的循环即可
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main(){
int result=0;
int i;
for (int num = 100; num < 1000; num++)
{
i = num;
result = 0;
while (i !=0) {
result += (int)pow(i % 10, 3);
i = i / 10;
}
if (result == num)
{
printf("%d\n", result);
}
}
return 0;
运行程序得到结果

其中涉及头文件#define _CRT_SECURE_NO_WARNINGS的使用
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.(这是在不添加头文件#define _CRT_SECURE_NO_WARNINGS下使用scanf的错误)。
因此根据错误我们选择使用scanf_s代替scanf或者使用头文件
但scanf_s在vs上可以运行,但是换成其它编译器则会出现问题,因此为了方便搬运和代码复用,我们在使用scanf时应加头文件#define _CRT_SECURE_NO_WARNINGS。
pow函数的使用
由于pow函数计算后默认为double类型,因此这里用(int)进行强制转换
其次在用pow等其他数学函数时,头文件因加上#include<math.h>
边栏推荐
猜你喜欢

MarkDown syntax summary

paddleocr window10 first experience

Deep learning framework pytorch rapid development and actual combat chapter3

YOLOv7使用云GPU训练自己的数据集

What's wrong with running yolov5 (1) p, r, map are all 0

IDEA打包jar包
![[ROS] (05) ROS Communication - Node, Nodes & Master](/img/f5/c541259b69a0db3dc15a61e87f0415.png)
[ROS] (05) ROS Communication - Node, Nodes & Master

第八单元 中间件
创建&编译ROS软件包Package](/img/c2/5931d5cbade509c6ca34d66a274756.png)
[ROS](02)创建&编译ROS软件包Package

Unit 13 Mixing in View Base Classes
随机推荐
Minio文件上传
重新学习编程day1 【初始c语言】【c语言编写出计算两个数之和的代码】
网页设计(新手入门)[通俗易懂]
Flask框架深入一
鼠标右键菜单栏太长如何减少
[ROS]roscd和cd的区别
yolov5,yolov4,yolov3乱七八糟的
The specific operation process of cloud GPU (Hengyuan cloud) training
8580 合并链表
编程规范——LiteOS
chapter6可视化(不想看版)
Flask-RESTful请求响应与SQLAlchemy基础
drf view component
深度学习框架pytorch快速开发与实战chapter3
第七单元 ORM表关系及操作
Flask框架
[ROS] (04) Detailed explanation of package.xml
MarkDown语法汇总
【c】小游戏---五子棋之井字棋雏形
第十一单元 序列化器