欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C语言小任务——寻找水仙花数

C语言小任务——寻找水仙花数

2025/2/8 18:02:59 来源:https://blog.csdn.net/niepan241041735/article/details/145284942  浏览:    关键词:C语言小任务——寻找水仙花数

介绍水仙花数:

首先,它是一个3 位数,而且它的每个数位上的数字的 3次幂之和等于它本身

例如153=1^3+5^3+3^3=1+125+27

步骤:

第一步:分离出这个三位数的三个数字

void getnum(int num , int* arr)
{int i = 0;for (i = 0; i < 3; i++){arr[2-i] = num % 10;num /= 10;}
}

有一点务必要注意,当我们要对主函数中的变量进行改变的时候,一定要传入该变量的地址,否则,由于作用域有限,改变只能在子函数中有效,无法影响在主函数中变量的值 

第二步:计算数字各个位置的三次方

int cube(int num)
{return num * num * num;
}

第三步,计算各个三次方之和

int sumcube(int *arr)
{int sum = 0;int i = 0;for (i = 0; i < 3; i++){sum += cube(arr[i]);}return sum;
}

第三步:判断是否和原数字相等(在住函数中做逻辑判断)

我们一般是,子函数中执行功能,主函数中执行逻辑判断

int main()
{int i = 0;int arr[3] = {9,9,9};for (i = 100; i < 1000; i++){getnum(i, arr);if (i ==sumcube(arr)) {printf("%d\n", i);}}return 0;
}

完整的代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include <stdlib.h>
#include <time.h> 
#include <math.h>
void getnum(int num , int* arr)
{int i = 0;for (i = 0; i < 3; i++){arr[2-i] = num % 10;num /= 10;}
}int cube(int num)
{return num * num * num;
}
int sumcube(int *arr)
{int sum = 0;int i = 0;for (i = 0; i < 3; i++){sum += cube(arr[i]);}return sum;
}
int main()
{int i = 0;int arr[3] = {9,9,9};for (i = 100; i < 1000; i++){getnum(i, arr);if (i ==sumcube(arr)) {printf("%d\n", i);}}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com