应用实践VC++编程题及答案.docx
- 文档编号:15353547
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:29
- 大小:27.81KB
应用实践VC++编程题及答案.docx
《应用实践VC++编程题及答案.docx》由会员分享,可在线阅读,更多相关《应用实践VC++编程题及答案.docx(29页珍藏版)》请在冰点文库上搜索。
应用实践VC++编程题及答案
类编程题
1.【题目】试定义一个类NUM,验证下列命题就是否成立:
任意一个正整数与其反序数相加,得到一个新的正整数,再对这个新正整数重复上述步骤,最终一定可以得到一个回文数。
例如,正整数350的反序数为053(即53),350+53=403,403+304=707,707就是回文数,命题成立。
又如,正整数2015的反序数为5102,2015+5102=7117,7117就是回文数,命题成立。
具体要求如下:
私有数据成员
intnum:
存放用于验证命题的正整数。
公有成员函数
NUM(intx):
构造函数,用x初始化数据成员num。
voidset(inta):
将num的值设置为a。
intyn(intn):
判断n就是否回文数,若就是,返回1;否则返回0。
voidfun():
使用num验证命题就是否成立,并显示验证过程。
在主函数中对该类进行测试。
输出示例:
num=350的验证过程如下:
350+53=403
403+304=707
命题成立!
num=2015的验证过程如下:
2015+5102=7117
命题成立!
#include
classNUM{
private:
intnum;
public:
NUM(intx);
voidset(inta);
intyn(intn);
voidfun();
};
NUM:
:
NUM(intx){
num=x;
}
voidNUM:
:
set(inta){
num=a;
}
intNUM:
:
yn(intn){
intt=n,s=0;
while(t){
s=s*10+t%10;
t/=10;
}
if(s==n)return1;
elsereturn0;
}
voidNUM:
:
fun(){
intm;
cout<<"num="< "< while (1){ intn=num,s=0;//350 do{ s=s*10+n%10;//053 n/=10; }while(n); m=s+num;//403 if(yn(m)==1){ cout< "< break; } else{ cout< num=m; } } } voidmain(){ NUMarr(350); arr、fun(); arr、set(2015); arr、fun(); } 2.【题目】试定义一个实现计算学生课程成绩的类STU,对学生学期总评成绩进行计算并排序。 具体要求如下: (1)私有数据成员 intnorm,ex,final,overall: 分别表示平时成绩、实验成绩、期末考试与总评成绩。 charname[15]: 学生姓名。 (2)公有成员函数 voidinit(char*name1,intnor1,intex1,intfin1): 用参数name1,nor1,exp1,fin1分别初始化成员name,norm,ex,final。 voidfun(): 计算学生的总评成绩。 计算方法为: 总评成绩=平时成绩占*20%+实验成绩占*25%+期末成绩占*55%。 总评成绩计算时要求四舍五入,并且期末考试成绩不足50分时,则期末考试成绩即为总评成绩。 friendvoidsort(STUst[],intn): 友元函数,对st按总评成绩进行从大到小排序。 voidprint(): 输出该学生信息。 (3)在主函数中先定义一个有5个元素的对象数组,用循环语句输入学生信息,并根据这些信息利用成员函数init()更新学生信息,然后使用函数sort()对数组排序,最后输出排序后的学生信息。 输入/输出示例(下划线部分为键盘输入): 请输入姓名、平时成绩、实验成绩、期末成绩: AAA827558 请输入姓名、平时成绩、实验成绩、期末成绩: BBB936084 请输入姓名、平时成绩、实验成绩、期末成绩: CCC678281 请输入姓名、平时成绩、实验成绩、期末成绩: DDD547851 请输入姓名、平时成绩、实验成绩、期末成绩: EEE915241 按总评成绩排序后: 姓名平时成绩实验成绩期末成绩总评成绩 BBB93608480 CCC67828178 AAA82755867 DDD54785158 EEE91524141 #include #include classSTU{ private: intnorm,ex,final,overall; charname[15]; public: voidinit(char*name1,intnorm1,intex1,intfin1); voidfun(); friendvoidsort(STUst[],intn); voidprint(); }; voidSTU: : init(char*name1,intnorm1,intex1,intfin1){ strcpy(name,name1); norm=norm1;ex=ex1;final=fin1; overall=0; } voidSTU: : fun(){ if(final>=50)overall=int(norm*0、2+ex*0、25+final*0、55+0、5); elseoverall=int(final+0、5); } voidsort(STUst[],intn){ for(inti=0;i for(intj=i+1;j if(st[i]、overall intt;t=st[i]、overall;st[i]、overall=st[j]、overall;st[j]、overall=t; } } voidSTU: : print(){ cout< } voidmain(){ STUs[3]; charname[100]; intnorm,ex,fin; for(inti=0;i<3;i++){ cout<<"请输入姓名、平时成绩、实验成绩、期末成绩: "< cin>>name>>norm>>ex>>fin; s[i]、init(name,norm,ex,fin); s[i]、fun(); } cout<<"按总评成绩排序后: \n姓名平时成绩实验成绩期末成绩总评成绩"< sort(s,3); for(i=0;i<3;i++){ s[i]、print(); } } 3.【题目】试定义一个类Array,首先求各列元素中的合数(非素数)之与,再将数组各列以其合数之与的大小从大到小排序,具体要求如下: (1)私有数据成员 inta[4][5]: 需要排序的二维数组。 (2)公有成员函数 Array(intt[][5],intn): 构造函数,用参数t初始化成员数组a,n表示数组t的行数。 intcomp(intn): 判断整数n就是否为合数,如果就是合数,返回值为1,否则返回值为0。 intsum_comp(intj): 求数组a第j列元素中所有合数之与。 voidexch(intj1,intj2): 交换数组a的第j1,j2列元素。 voidfun(): 根据题意对二维数组进行列排序。 voidprint(): 以矩阵的形式输出成员数组。 (3)在主函数中定义一个二维数组,并使用该数组对类Array进行测试。 输出示例: 原数组: 10125415 161781910 1112131415 1670181920 排序后的数组: 12151054 171016819 1215111314 7020161819 3.答案 #include classArray{ private: inta[4][5]; public: Array(intt[][5],intn); intcomp(intn); intsum_comp(intj); voidexch(intj1,intj2); voidfun(); voidprint(); }; Array: : Array(intt[][5],intn){ for(inti=0;i for(intj=0;j<5;j++) a[i][j]=t[i][j]; } intArray: : comp(intn){ intflag=0; for(inti=2;i if(n%i==0)flag=1; returnflag; } intArray: : sum_comp(intj){ ints=0; for(inti=0;i<4;i++) if(comp(a[i][j])==1) s+=a[i][j]; cout<<"&"< returns; } voidArray: : exch(intj1,intj2){ for(inti=0;i<4;i++){ intd=a[i][j1]; a[i][j1]=a[i][j2]; a[i][j2]=d; } } voidArray: : fun(){ for(inti=0;i<4;i++) for(intj=i+1;j<5;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 实践 VC 编程 答案