一个根据输入数字求n位水仙花数的编程问题,c++实现:
看到问题描述后,首先想到用循环遍历n位数字然后进行是否相等的检查,循环遍历n位数字比较容易,还要取n位数字上的每位数字进行求幂和求和与n位数字相比较,然后输出条件符合的数字,大体思路是如此,下面直接上代码
#includeusing namespace std; int main() { int n,a=1,b,c,d=0,z=0,sum_i; cout<<"请输入位数(幂数):"; cin>>n; int arr[n];//建立一个长度为n的数组,用来存储遍历的数的每位上的数字 for(int i=1; i 1、想要进行循环我们需要用到n位的起始值,如3位数是100,四位数是1000,第一个for循环求出n位的基准值a,a可以用来做我们最外层for循环的初始值,而终止值就是a*10,如3位数是999,四位数是9999;在下面取遍历数的每位上的数字时,我们也会用到这里的a值。
2、建立遍历循环后,就应该取遍历数每位的数字了,前面定义了一个长度为n的数组,就是为了存储每位上的数字,定义for循环运行n次取数字,用n位的遍历数字对n位的基准数字做除法即可得到最高位数字(int为整形自动省略小数点后数字),遍历数字对基准数字取余数后会去掉最高位,然后基准数字除10,依次取到n个值存入数组中。
3、然后进行对数组中的每个元素取n次幂,然后进行相加,这里用到两个循环,比较容易理解。相加的值与遍历数字i进行比较,相等则输出水仙花数。
备注:这里输入的数字为3到7才会有符合的水仙花数。
分享完毕,小白一个,随手而作。



