打开考生文件夹proj3下的工程proj3,其中声明了agicNumber类,该类是一个用于表示连续正整数序列的类。MagicNumber的成员函数Narcissistic的功能是查找该序列中的水仙花...
3位的水仙花数共4个:
153
370
371
407
注意:只需在 //********333******** 和 //********666******** 之间填
入所编写的若干语句,不要改动程序中的其他内容。
参考解析: 参考答案:
sum=0;
for(i=i-1;i>=0;i--)
{
sum+=pow(figures[i], digits);
}
if(sum==number)
{
set[count++] = number;
}
考点分析:
主要考察类构造函数的使用,初始化列表。获取整数各个位上的数值。
答案解析:
MagicNumber类中的成员变量digits代表连续数列的位数,构造函数首先使用参数来初始化digits,然后根据digits初始化min和max,其中min代表digits位数的最小值,max代表digits位数的最大值,count用来统计min~max范围内的水仙花数的个数,set数组用来存储min~max范围内的水仙花数
程序首先在main函数根据用户输入的数字d来构造一个MagicNumber对象,构造函数完成digits、min、max的初始化,然后调用MagicNumber对象的成员函数Narcissistic()来统计所有digits位数的水仙花数信息:for循环通过遍历min~max范围内的所有数,在遍历过程中,while循环将当前遍历到的数x的各个数位上的数字统计到figures数组的前digits个元素中,接下来需要做的事情就是判断x是否是水仙花数:即将figures数组的前digits个元素分别求digits次方(位数次方)再相加,累加的和存储到sum中,最后判断sum是否与当前数x(number)相等,若相等,则x属于水仙花数,需要把x存储到下标为count的set数组中,同时count变量自增1(水仙花数个数加1),否则的话继续下一次for循环,直到当前数x达到最大值max为止。
统计完水仙花数后,再调用对象的Print函数,输入水仙花数信息。