应用实践VC++编程题及答案.docx
- 文档编号:2190226
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:24
- 大小:23.81KB
应用实践VC++编程题及答案.docx
《应用实践VC++编程题及答案.docx》由会员分享,可在线阅读,更多相关《应用实践VC++编程题及答案.docx(24页珍藏版)》请在冰点文库上搜索。
应用实践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="vvnum<<‘的验证过程如下:
"< while (1){ intn=num,s=0;verall 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<<"请输入姓名、平时成绩、实验成绩、期末成绩: "< s[i].init(name,norm,ex,fin); s[i].fun(); } cout<<"按总评成绩排序后: \n姓名平时成绩实验成绩期末成绩总评成绩"< 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 16 17 8 19 10 11 12 13 14 15 16 70 18 19 20 排序后的数组: 12 15 10 5 4 17 10 16 8 19 12 15 11 13 14 70 20 16 18 19 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 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++) if(sum_comp(i) exch(i,j); } voidArray: : print(){ for(inti=0;i<4;i++) { for(intj=0;j<5;j++) cout< cout< } } voidmain(void){ intb[4][5]={10,12,5,4,15,16,17,8,19,10,11,12,13,14,15,16,70,18,19,20}; Arrayarr(b,4); cout<<"原数组: "< (); (); cout<<"排序后的数组: "< (); } 4.【题目】已知切线法求方程f(x)=ax2+bx+c=0在x附近的一个解的迭代公式为: x=x-f(x)/f'(x),其中f'(x)=2ax+b为函数f(x)的导数。 试定义一个类EQU用切线法求方程f(x)二ax2+bx+c=0在x附近的一个解。 具体要求如下: (1)私有数据成员 floata,b,c: 保存方程的系数a,b和c。 doublex: x为所求得的解。 (2)公有成员函数 EQU(floata1,floatb1,floatc1): 构造函数,用参数a1,b1,c1分别初始化成员a,b,c。 voidfun(doublex0,doublee): 求方程在x0附近的一个解,所采用的算法是: 依次计算x1=x0-f(x0)/f'(x0),x2=x1-f(x1)/f'(x1),…,xn=xn-1-f(xn-1)/f'(xn-1),直到 |f(xn)| voidprint(): 输出所求得的解。 (3)在主函数中建立EQU寸象,并求出方程f(x)=2x2+6x-7=0在x=附近的一个解,要求最终误差|f(x)|<10-5,最后调用print()函数输出所求得的解。 正确程序的输入/输出结果如下(下划线部分为键盘输入): 请输入方程的系数(a,b,c): 26-7 请输入预估的初始解x0: 5 请输入误差要求(e): 该方程的解是: 4.答案 #include<>classEQU{ private: doublex; public: EQU(floata1,floatb1,floatc1); voidfun(doublex0,doublee);voidprint(); }; EQU: : EQU(floata1,floatb1,floatc1){a=a1;b=b1;c=c1; x=; } voidEQU: : fun(doublex0,doublee){doublef; do{ doublef0=a*x0*x0+b*x0+c; doubleff=2*a*x0+b; x=x0-f0/ff; f=a*x*x+b*x+c; doublef1=2*a*x+b;x0=x-f/f1; }while(f>e); } voidEQU: : print(){ cout< } voidmain(){ doublex0,e; cout<<"请输入方程的系数(a,b,c): "; cin>>a>>b>>c; cout<<"请输入预估的初始解x0: "; cin>>x0; cout<<"请输入误差要求(e): "; cin>>e; cout<<"该方程的解是: "; EQUt(a,b,c); (x0,e); (); } 5.【题目】试定义一个类Array,将二维数组各行按其各行元素中所 有素数之和从大到小排序,具体要求如下: (1)私有数据成员 inta[5][4]: 待处理的数组。 (2)公有成员函数 Array(intt[][4],intn): 构造函数,用参数t初始化成员数组a,n为数组t的行数。 intprime(intn): 判断整数n是否为素数,如果是素数,返回值为 1,否则返回值为0。 intsum_prime(inti): 求数组a中第i行元素中所有素数之和。 voidexch(inti1,inti2): 交换数组a的第i1,i2行元素。 voidfun(): 根据题意对二维数组进行行排序。 要求排序过程中交换数据时使用成员函数exch()。 voidprint(): 以矩阵的形式输出成员数组。 (3)在主函数中定义一个二维数组,并使用该数组对类Array进行测试。 输出示例: 原数组: 10 12 5 4 15 16 17 8 19 10 11 12 13 14 15 16 70 18 19 20 排序后的数组: 19 10 11 12 70 18 19 20 15 16 17 8 13 14 15 16 10 12 5 4 5答案.#include<>classArray{private: inta[5][4];public: Array(intt[][4],intn); intprime(intn); intsum_prime(inti); voidexch(inti1,inti2);voidfun(); voidprint(); }; Array: : Array(intt[][4],intn){for(inti=0;i for(intj=0;j<4;j++)a[i][j]=t[i][j]; } intArray: : prime(intn){ for(inti=2;i if(n%i==0)return0;return1; } intArray: : sum_prime(inti){ ints=0; for(intj=0;j<4;j++)if(prime(a[i][j]))s+=a[i][j]; returns; } voidArray: : exch(inti1,inti2){for(intj=0;j<4;j++) intd=a[i1][j]; a[i1][j]=a[i2][j]; a[i2][j]=d; } } voidArray: : fun(){ for(inti=0;i<4;i++) for(intj=i+1;j<5;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 实践 VC 编程 答案