首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
打开考生文件夹下的解决方案文件proj3,其中声明了MagicNumber类,该类是一个用于表示连续正整数序列的类。MagicNumber的成员函数Intimacy的功能是查找该序列中的亲密数对。亲密数对的定义是:如果整数a的所有正因子(包括1,但不包括a
打开考生文件夹下的解决方案文件proj3,其中声明了MagicNumber类,该类是一个用于表示连续正整数序列的类。MagicNumber的成员函数Intimacy的功能是查找该序列中的亲密数对。亲密数对的定义是:如果整数a的所有正因子(包括1,但不包括a
admin
2020-04-10
67
问题
打开考生文件夹下的解决方案文件proj3,其中声明了MagicNumber类,该类是一个用于表示连续正整数序列的类。MagicNumber的成员函数Intimacy的功能是查找该序列中的亲密数对。亲密数对的定义是:如果整数a的所有正因子(包括1,但不包括a自身)之和等于b,并且整数b的所有正因子(包括l,但不包括b自身)之和等于a,则称整数a和b为亲密数对。
请根据亲密数的定义编写成员函数Intimacy。在main函数中给出了一组测试数据,此时程序的输出应该是:
1和1000之间的亲密数对为:
220和284
注意:只需在函数Filter的//*******333*******和//*******666*******之间填入若干语句,不要改动程序中的其他内容。
//MagicNumber.h
#include<iostream>
#include<string>
#include<cmath>
#pragma warning(disable:4996)
using namespace std;
class MagicNumber
{
public:
MagicNumber(int x1,int x2): min(x1),max(x2),count(C){}
void ResetCount(){count=0;}
int GetCount()const{return count;}
int GetSet(int index){return set[index];}
void Intimacy();//寻找亲密数对
void Print()
{
cout<<min<<"和"<<max<<"之间的亲密数为:"<<endl;
for(int i=0;i<count;i+=2)
cout<<set
<<"和"<<set[i+1]<<endl;
}
private:
int digits;//Magic数的位数
int min,max;//待计算的数值范围
int count;//Magic数的数量
int set[40];//Magic数集合
};
void writeToFile(const char*);
//main.cpp
#include"MagicNumber.h"
void MagicNumber::Intimacy()
{
int number;
for(number=min;number<max;number++)
{
//******333******
//******666******
}
}
int main()
{
MagicNumber obj(1,i000);
obj.Intimacy();
obj.Print();
writeToFile("");
return 0;
}
选项
答案
void MagicNumber::Intimacy() { int number; for(number=min; number<max;number++) { int i; //过滤已经处理过的亲密数对 bool exist=false; for(i=0;i<count; i++) { if(number==set[i]){ exist=true; } } if(exist){ continue; } int numberA=number; int numberB=0; int sumA=0,sumB=0; //求numberA的所有正因子之和surnA for(i=1; i<=numberA/2;i++) { if(numberA%i==0){ sumA+=i; } } //判断sumA的合法性 if(sumA<min || sumA>max || sumA==numberA){ continue; } //让numberB等于sumA求numberB的所有正因子之和sumB numberB=sumA; for(i=1;i<=numberB/2;i++){ if(numberB%i==0){ sumB+=i; } } //判断numberA和mumberB是否属于亲密数对若是存入set;数组更新count if(sumB==numberA){ set[count;++]=nuraberA; set[count++]:numberB; } } }
解析
根据题意,Intimacy是求rain和max之间的亲密数对,程序首先遍历rain和max之间的所有整数,在遍历的过程中,判断当前的numberA是否处理过,如果处理过继续判断下一个数;然后求numberA的正因子之和sumA,如果sumA不在min和max之间,或sumA等于numberA,说明当前sumA不合法,继续处理下一个数;否则sumA赋给numberB,求numberB的正因子之和sumB,最后判断sumB是否与numberA相等,如果相等,说明numberA和numberB属于亲密数对,存入set数组并更新count。
转载请注明原文地址:https://kaotiyun.com/show/Hu8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面关于break语句的描述中,不正确的是
下列描述中,错误的是()。A)公有继承时基类中的公有成员在派生类中仍是公有成员B)公有继承时基类中的保护成员在派生类中仍是保护成员C)保护继承时基类中的公有成员在派生类中仍是公有成员D)保护继承时基类中的保护成员在派生类中仍是保护成
有如下类定义:classPoint{private:staticinthow_many;};______how_many=0;要初始化Point类的静态成员how_many,在下画线处应填入的内容是
数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
下列说法中错误的是()。
线性表的顺序存储结构和线性表的链式存储结构分别是()。
已知类X成功地重载了--、=、+、和[]这几个运算符,则其中肯定属于成员函数的运算符是()。
软件测试可分为白盒测试和黑盒测试。基本路径测试属于______测试。
执行下面语句后,输出字符“#”的个数是()。for(inti=50;i>1;--i)cout
若a=12,b=14,c=0,则表达式“((y=(a>B)?a:B)>C)?y:c”的值为【】。
随机试题
简述教育管理质量的特点。
患儿男,6岁,因“发热伴咳嗽6天”来诊。患儿6天前接触感冒的父亲,之后出现发热,体温最高39.9℃,伴咳嗽,有痰,无喘息及呼吸困难。查体:体温38.9℃,呼吸36次/min,血压95/70mmHg,意识清,一般状态可,呼吸略促,口唇无发绀,无鼻翼扇动及三凹
关于宫颈癌的早期发现与预防,下列措施错误的是
某设备目前实际价值为30000元,有关数据见下表,则在静态模式下,该设备的经济寿命还剩余()年。
企业给予购货方的现金折扣,应冲减支付当期的主营业务收入。()
根据支付结算法律制度的规定,关于票据背书效力的下列表述中,不正确的是()。
A注册会计师负责对拟设立的甲有限责任公司(以下简称甲公司)的注册资本进行审验。甲公司注册资本为5000万元,拟分3次出资。在审验过程中,A注册会计师遇到下列事项,请代为做出正确的专业判断。甲公司出资者在出资协议中约定的下列出资方式和出资金额,A注册会计
某企业计划从2003年起产量每年比上一年增长7%,按此计划2008年产量比2003年增加()。
以禅宗南北两个宗派来比喻山水画的不同风格的是()。
新疆的哈萨克人用经过训练的金雕在草原上长途追击野狼。某研究小组为研究金雕的飞行方向和判断野狼群的活动范围,将无线电传导器放置在一只金雕身上进行追踪。野狼为了觅食,其活动范围通常很广。因此,金雕追击野狼的飞行范围通常也很大。然而两周以来,无线电传导器不断传回
最新回复
(
0
)