当前位置:网站首页>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>
边栏推荐
- Chapter6 visualization (don't want to see the version)
- chapter6可视化(不想看版)
- yolov5,yolov4,yolov3乱七八糟的
- 使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
- Unit 10 Continuous Tuning
- Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c
- The language of initial
- drf view component
- Camera Hal(Hal3)层修改Preview流
- 8580 Merge linked list
猜你喜欢
随机推荐
第五单元 保持状态
drf序列化器-Serializer
Flask框架深入二
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
8576 Basic operations of sequential linear tables
drf视图组件
动手学ocr(一)
C语言一级指针(补)
Flask-SQLAlchemy
网页设计(新手入门)[通俗易懂]
run yolov5
浅浅写一下PPOCRLabel的使用及体验
【ROS】编译软件包packages遇到进度缓慢或卡死,使用swap
Web Design (Beginners) [easy to understand]
STM32(F407)—— 堆栈
Deep learning framework pytorch rapid development and actual combat chapter3
关于密码加密的一点思路
深度学习框架pytorch快速开发与实战chapter4
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十三章)