文件名:narcissistic_numbers.c
1. 包含头文件
c
#include <stdio.h>
#include <math.h>
#include <stdio.h>:包含标准输入输出库,用于printf函数。
#include <math.h>:包含数学库,用于pow函数计算幂。
2. 宏定义
c
#define DIGIT_COUNT 3
定义了一个宏DIGIT_COUNT,表示我们要查找的水仙花数的位数。在这个例子中,我们查找的是三位数的水仙花数,所以定义为3。
3. 函数声明
c
int isNarcissisticNumber(int num);
声明了一个函数isNarcissisticNumber,它接受一个整数num作为参数,并返回一个整数。在C语言中,通常通过返回0(假)或非0(真)来表示布尔值。
4. 主函数
c
int main() {
int start = pow(10, DIGIT_COUNT - 1);
int end = pow(10, DIGIT_COUNT) - 1;
printf("%d位数的水仙花数有:\n", DIGIT_COUNT);
for (int num = start; num <= end; num++) {
if (isNarcissisticNumber(num)) {
printf("%d\n", num);
}
}
return 0;
}
主函数首先计算要遍历的数的起始值start和结束值end。对于三位数来说,起始值是100(pow(10, 3-1)),结束值是999(pow(10, 3) - 1)。
然后,主函数打印出一个提示信息,说明正在查找的是多少位数的水仙花数。
接下来,主函数使用一个for循环遍历从start到end的每个数,对于每个数,它调用isNarcissisticNumber函数来判断它是否是水仙花数。
如果isNarcissisticNumber函数返回非0值(即真),则打印出该数。
最后,主函数返回0,表示程序正常结束。
5. isNarcissisticNumber函数定义
c
int isNarcissisticNumber(int num) {
int originalNum = num;
int sum = 0;
int digitPower = DIGIT_COUNT; // 每位数字的幂次,对于三位数来说是3
while (originalNum != 0) {
int digit = originalNum % 10;
sum += pow(digit, digitPower);
originalNum /= 10;
}
return sum == num;
}
isNarcissisticNumber函数接受一个整数num作为参数,并返回一个整数(0或1,表示假或真)。
它首先将num的值保存在originalNum变量中,以便在循环中逐位提取数字。
然后,它初始化一个sum变量为0,用于存储各位数字的幂和。
digitPower变量存储每位数字的幂次,对于三位数来说,这个值是3。
接下来,函数使用一个while循环来逐位提取originalNum中的数字,并计算它们的幂和。
在每次循环中,它使用% 10操作提取最低位的数字,并将其存储在digit变量中。
然后,它使用pow函数计算digit的digitPower次幂,并将结果加到sum中。
最后,它使用/= 10操作去掉已经处理过的最低位。
循环结束后,函数检查sum是否等于原始的num。如果相等,则返回1(真),表示num是一个水仙花数;否则返回0(假)。
综上所述,这份代码通过宏定义、函数封装和清晰的变量命名,实现了查找并打印所有指定位数的水仙花数的功能。
编码追梦人
- 粉丝: 637
- 资源: 20
最新资源
- 洞见研报江阴振宏重型锻造(锻件及粉末冶金制品制造商,振宏重工(江苏)股份有限公司)创投信息
- 大学生在线租房平台--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 垃圾分类网站-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生就业服务平台--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于java的美食信息推荐系统的设计与实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 洞见研报科沃斯(家庭服务机器人研发与生产商,科沃斯机器人股份有限公司)创投信息
- 大学生创新创业项目管理系统--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生平时成绩量化管理系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 工资信息管理系统--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 当代中国获奖的知名作家信息管理系统的设计与实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 房屋租赁管理系统boot--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 果蔬作物疾病防治系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 爱心商城系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 商务安全邮箱邮件收发-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 洞见研报卢米蓝(新型OLED材料研发生产商,宁波卢米蓝新材料有限公司)创投信息
- 基于python后端开发框架
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈