文件名: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(假)。
综上所述,这份代码通过宏定义、函数封装和清晰的变量命名,实现了查找并打印所有指定位数的水仙花数的功能。
编码追梦人
- 粉丝: 484
- 资源: 20
最新资源
- 【创新未发表】基于布谷鸟优化算法CS-Kmean-Transformer-LSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于多元宇宙优化算法MVO-Kmean-Transformer-BiLSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于布谷鸟优化算法CS-PID控制器优化研究Matlab代码.rar
- 【创新未发表】基于多元宇宙优化算法MVO-Kmean-Transformer-LSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于多元宇宙优化算法MVO-Kmean-Transformer-GRU实现负荷预测附Matlab代码.rar
- 【创新未发表】基于多元宇宙优化算法MVO-PID控制器优化研究Matlab代码.rar
- 【创新未发表】基于飞蛾扑火优化算法MFO-Kmean-Transformer-BiLSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于飞蛾扑火优化算法MFO-Kmean-Transformer-GRU实现负荷预测附Matlab代码.rar
- 【创新未发表】基于飞蛾扑火优化算法MFO-Kmean-Transformer-LSTM实现负荷预测附Matlab代码.rar
- 基于非洲秃鹫优化算法AVOA-Kmean-Transformer-BiLSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于非洲秃鹫优化算法AVOA-Kmean-Transformer-GRU实现负荷预测附Matlab代码.rar
- 【创新未发表】基于飞蛾扑火优化算法MFO-PID控制器优化研究Matlab代码.rar
- CSS+jQuery制作炫酷带阴影的3D立体文字动画特效源码.zip
- 【创新未发表】基于非洲秃鹫优化算法AVOA-Kmean-Transformer-LSTM实现负荷预测附Matlab代码.rar
- 基于蝠鲼觅食优化算法MRFO-Kmean-Transformer-BiLSTM实现负荷预测附Matlab代码.rar
- 【创新未发表】基于非洲秃鹫优化算法AVOA-PID控制器优化研究Matlab代码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈