应用实践VC++编程题及答案

上传人:回**** 文档编号:201965778 上传时间:2023-04-21 格式:DOCX 页数:31 大小:35.16KB
收藏 版权申诉 举报 下载
应用实践VC++编程题及答案_第1页
第1页 / 共31页
应用实践VC++编程题及答案_第2页
第2页 / 共31页
应用实践VC++编程题及答案_第3页
第3页 / 共31页
资源描述:

《应用实践VC++编程题及答案》由会员分享,可在线阅读,更多相关《应用实践VC++编程题及答案(31页珍藏版)》请在装配图网上搜索。

1、类编程题【题目】试定义一种类NU,验证下列命题与否成立:任意一种正整数与其反序数相加,得到一种新的正整数,再对这个新正整数反复上述环节,最后一定可以得到一种回文数。例如,正整数350的反序数为05(即53),350+5=403,0+304=7,7是回文数,命题成立。又如,正整数的反序数为102,+102 =711,717是回文数,命题成立。具体规定如下:私有数据成员in u:寄存用于验证命题的正整数。公有成员函数NUM(i ):构造函数,用x初始化数据成员um。voidse(int a):将nu的值设立为a。nt yn(int):判断n与否回文数,若是,返回1;否则返回。vod f():使用n

2、u验证命题与否成立,并显示验证过程。在主函数中对该类进行测试。输出示例:um=350的验证过程如下:350+543403+30=707命题成立!nu=的验证过程如下:5102=7117命题成立!#incle cls Nrvate:nt um;ublic:NUM(in x);oid se(it);iy(int );voi un();;NM::NM(i x) m=x;voi NUM::st(int a) nu=;int UM:yn(inn)it t=n,s=;while(t)=s*10t%10; t/=;(s=n) retun1;e retu 0;id NM:fun() nt m;onu=num的

3、验证过程如下:endl;whil(1) t n=um,s0; /350 do =s*1+%0;/ 53 n/0;we(n); m=nu; /03 if(y()=1) coutnum+smn命题成立!ed; brea;lse coutu=mndl;num=m;vd main() NM arr(35); rrfn(); arset(); arr.fn();2.【题目】试定义一种实现计算学生课程成绩的类ST,对学生学期总评成绩进行计算并排序。具体规定如下:(1) 私有数据成员in nr, x,final,oveall:分别表达平时成绩、实验成绩、期末考试和总评成绩。ha name1:学生姓名。(2)

4、 公有成员函数odinit(char *name, intnor1,int ex, intfin1):用参数na1,nor1,ex1,i1分别初始化成员nme,nm, ex, final。voi un( ):计算学生的总评成绩。计算措施为:总评成绩平时成绩占2%实验成绩占*期末成绩占*55。总评成绩计算时规定四舍五入,并且期末考试成绩局限性50分时,则期末考试成绩即为总评成绩。ried vod sort(STUst,int n):友元函数,对按总评成绩进行从大到小排序。void print( ):输出该学生信息。() 在主函数中先定义一种有5个元素的对象数组,用循环语句输入学生信息,并根据这些

5、信息运用成员函数i()更新学生信息,然后使用函数st()对数组排序,最后输出排序后的学生信息。输入/输出示例(下划线部分为键盘输入):请输入姓名、平时成绩、实验成绩、期末成绩:A2 7 58请输入姓名、平时成绩、实验成绩、期末成绩:B 93 60 84请输入姓名、平时成绩、实验成绩、期末成绩:C 672 81请输入姓名、平时成绩、实验成绩、期末成绩:DDD547851请输入姓名、平时成绩、实验成绩、期末成绩:EE 91 41按总评成绩排序后:姓名平时成绩 实验成绩期末成绩总评成绩BBB 3 6 84 8C 67 8 8 AAA 2 58 67DDD 54 8 5 58E 1 52 41 #in

6、clde#inlude strig.clas SUpriate:int orm,ex,nal,oerall;a nae1;pub: vid it(ch*ame1,nt orm1,int e1,int in); oidfun(); findvoi ort(STU s,it n);od pri();void STU:int(cha *nam1,nt orm1,in ex,nt fin1)strcpy(a,me1);normorm1;e=ex1;fia=fn;ora;void STU::un() if(fnal50) overl=in(nor*0.2x*25+nal0550.5); ele vera

7、ll=int(final0.);vid srt(SU t,nt n)fr(it i0;n-1;i+)fo(int =+1;+)f(stioverallstj.oveall)int;t=sti.ovrall;sti.oveall=st.veral;stjveal;void STU:print()cotnamtnormtexialtoverlend;id main()STU s3;ha nae100;intnorm,e,fin;fo(int i=0;i3;i+)couneormexin;s.init(nme,orm,ex,fin);si.un(); cout按总评成绩排序后:n姓名 平时成绩 实验

8、成绩 期末成绩 总评成绩edl;sot(s,3); or(i=0;i3;i+)sprnt();.【题目】试定义一种类Aray,一方面求各列元素中的合数(非素数)之和,再将数组各列以其合数之和的大小从大到小排序,具体规定如下: ()私有数据成员int a4:需要排序的二维数组。(2)公有成员函数Array(int 5, it n):构造函数,用参数t初始化成员数组a,n表达数组t的行数。i c(nt ):判断整数n与否为合数,如果是合数,返回值为1,否则返回值为。int sum_com(it j):求数组a第j列元素中所有合数之和。voi ex(in j1, int):互换数组a的第j1, j列

9、元素。void fn():根据题意对二维数组进行列排序。id print():以矩阵的形式输出成员数组。(3)在主函数中定义一种二维数组,并使用该数组对类Array进行测试。输出示例:原数组:10 56 17 8 19 1 12 13 4 1 7 1 9 20排序后的数组:12 15 1 5 417 0 1 8 1 15 11 13 1470 0 6 18 193答案#nclude clas Arrayprivae:nt45;public:ry(it ,int n);int co(nt n);int su_cmp(it );void exch(in j1,it 2);voidun();voi

10、pnt();;Ara::Aay(int t,int n)fo(int i0;n;)f(ij0;j5;j+)aij=tij;t rra:cop(intn) nt fla=0; for(int i;i;i+) if(n=0)flag=1; return fa;intArra:sm_cmp(in)ts0; f(inti=0;i4;i+) if(cmp(aij)=) s+=ij;coutsnl;eturns;oida::exch(int 1,int j2) for(int i=0;i4;i+)nt aij; aij1=aij2; ij2=d;void ray:fn() fo(int =0;i4;+)

11、fo(int j=i+1;5;j+) (sum_cmp(i)su_cop(j)) exh(i,j);voi Arra:rint()fo(int i=;4;i+)for(int j=0;j5;j+)coutaijt;utndl;vod mai(vid)it b45=10,12,4,,1,17,8,19,10,1,12,1,14,15,0,1,9,20;Arra rr(,4);cot原数组:edl;arr.prnt();ar.fn(); cout排序后的数组:e;arr.prit();.【题目】 已知切线法求方程 (x)x2+bx+c=0 在x附近的一种解的迭代公式为:x=x-f(x)/(x),其

12、中f()2a+b为函数f()的导数。试定义一种类EQU,用切线法求方程 f(x)=x+0 在x附近的一种解。具体规定如下:(1)私有数据成员fa ,b,c:保存方程的系数a,b和。duble x:为所求得的解。(2)公有成员函数EQ(floata1, foat b, floa c):构造函数,用参数a1,b,c1分别初始化成员a,b,。voidf(double x0,oble ):求方程在x0附近的一种解,所采用的算法是:依次计算x=x0-(x0)/f(0),x=x1f(x)f(x1),, xn=xn-1(xn1)/(x-1),直到|(x)|为止。void pit( ):输出所求得的解。()

13、在主函数中建立EQ对象,并求出方程 f(x)=x2+x-70 在x=5附近的一种解,规定最后误差|f()|0-5,最后调用pri()函数输出所求得的解。对的程序的输入/输出成果如下(下划线部分为键盘输入):请输入方程的系数(a,b,c):26-7请输入预估的初始解x: 请输入误差规定():0.00001该方程的解是:08914.答案#incude e);oid E::int () ouxel;void main() foata,c; dole x0,e; outab; cout0;cout; cut该方程的解是:; U t(,b,c); t.fu(x0,e); tprint();5.【题目】试

14、定义一种类Array,将二维数组各行按其各行元素中所有素数之和从大到小排序,具体规定如下:(1) 私有数据成员int 54:待解决的数组。() 公有成员函数Arry(int 4, it n):构造函数,用参数t初始化成员数组,n为数组的行数。int prime(int ):判断整数n与否为素数,如果是素数,返回值为1,否则返回值为0。itsm_pre(int i):求数组a中第i行元素中所有素数之和。vexch(iti1, nti2):互换数组的第i1,i2行元素。id fu( ):根据题意对二维数组进行行排序。规定排序过程中互换数据时使用成员函数exch()。oi rint( ):以矩阵的形

15、式输出成员数组。(3) 在主函数中定义一种二维数组,并使用该数组对类ay进行测试。输出示例:原数组: 12 5 1 1 1 8 1 1 1213 14 15 16 8 19 0排序后的数组:9 10 11 1270 18 19 2015 16 17 813 14 15 60 12 5 5答案iclude iotream.hcls Arraprvae:nta54;plic:Ara(intt4,int );intprme(int n);i sumpim(it i);void exh(i i1,it );vidfun();vod rint();rray:Ara(nt t4,intn) for(in

16、0;i+) or(int=;4;j+) =ij;it Arra::rime (int) fr(int 2;in;i+)f(n%i=0) ren 0;etun 1;it Arra:s_pri (int i)it s0; for(nt=0;j4;j+)if(rim(aij)) +=aij;return s;oid Aray:exh(int ,int i2) f(int j0;j4;j+) tdai1j; aa2; i2jd; void ray:fu()fo(nt i=0;i4;i+)o(int ji+;j5;j+)if(umprme(i)um_rime(j) xh(i,j);voi rry:rin

17、t() for(nt i=;i;i+)for(int =0;4;+) cutit; counl;vdin() t b54=10,5,4,15,1,17,8,19,10,11,1,14,15,16,0,1,1,20; Ay rr(,5);cout原数组:;outend;arr.print();arr.fun();cout排序后的数组:;coutendl;arr.print();6【题目】判断某人与否为青年的原则是男性不超过35周岁或女性不超过周岁。已知身份证号从第7位开始的持续8位表达持证人的出生年月日,身份证号的第17位为奇数表达持证人为男性,身份证号第17位数字为偶数表达持证人为女性。例如:

18、身份证号为3210 X的持证人出生年月为983年1月日,性别为男性。试定义一种类ID,根据身份证号判断持证人截止到10月1日与否为青年。具体规定如下:(1) 私有数据成员carid:保存18位身份证号。int y,m,d, es: y,,d分别表达持证人的出生年、月、日。yes取值为或分别表达持证人是青年或不是青年。ca *sex:持证人的性别(”男”或”女”)。(2) 公有成员函数D(cha* s):用参数s初始化成员i(需申请动态内存),并将y,m,d初始化为0,并为指针se分派足够的存储空间。vi un( ):根据身份证号计算持证人的出生年月和性别,并判断其与否为青年。oid print

19、( ):输出持证人的信息。ID(): 析构函数,进行必要的操作。(3) 在主函数中输入一种身份证号,生成相应的对象,判断并输出持证人截止到0月1日与否为青年。可以使用如下身份证号测试程序:身份证号1:32102身份证号:32103输入/输出示例(下划线部分为键盘输入):Inpt a I: 321102身份证号:32023出生日期: 198.3性别: 男与否青年: 是!6.#inlude iotem#include ls private:char d; int ,m,d,ys; char *sex;ulc: ID(cr *s);od fun();voidpit(); ID();;ID::I(ca

20、r * s)id=ne har100;tcpy(id,s);y=0;m=0;=0;sexnew char5;sex=0;ye=;vid ID::fun() n i=6; whle(10) y=10+-0; whle(i1)m=m*+idi+-0;whie(i14) d=d*10+idi+-;if(id160)=1) srcy(s,男);se srcpy(sex,女); inae-y; (ae0&strc(sex,女)=0) yes=; if(age=5&rcp(sex,男)=0) e1;void ID::rnt( ) cout身份证号:;coutidenl; cot出生日期:;ouy.ndl;

21、cout性别:;couexndl;out与否青年:; if(yes) out是enl; lout不是enl;I:I() (id) ele d; (sx) elet x;vmain() cha cd1002112; /char crd200; /321023 couad2; Dpon(card);persn.fun(); persn.pint();7.【题目】设数组派生出数组的规则为 ,其中,为数组中n个元素的平均值, 为数组a中n个元素的方差, 。试定义一种类rry,实现上述数组的派生。具体规定如下:(1) 私有数据成员doubl a5,b5:数组,派生数组b。(2)公有成员函数Aay(dbe

22、 t, n):构造函数,用参数的前n个元素初始化成员数组a。doue ave():计算并返回数组a中所有元素的平均值。dbleda():计算并返回数组a中所有个元素的方差。voifu():根据题意派生数组b。注:头文献mh.h中的函数oube o(do x, double y)返回值为xy。void pit():输出成员数组。() 在主函数中定义一种数组,并使用该数组对类Ara进行测试,规定输出原数组和派生数组。输出示例:原数组a:6.1 2.6 15.8 4.3 .72派生数组b:0.07815 0.64835 0.179753 0.046989 0.0581417.#clude iosre

23、am.h#include mathlss Ara riae:ea5,b5;pubi:rray(oulet, int n); dube ave(); d dt(); oid un(); vidpint();;rray:Arr(uble , int )r(it i=0;in;i+) ai=ti;i=0;dol rr::ave()dule s0;or(i i=0;5;i+)s+ai; return s/5;double Aray:()double s=;(ti;5;i+)=(ai-ave())*(ai-ve(); return s/;void rra::fn() doubi3.141592,e=2.

24、71828; ouble tsqrt(2*pi*t()),s; fo(int i=0;i+)s=-(a-av())(ai-ve())/(*at(); bi=pow(e,s)/t; voAry:prin()out原数组a:edl;fo(ini=0;5;+)coutait;couedl; cot派生数组b:el;for(i=0;i5;i+)outbi;cut,则方程在区间x,x2上无解;(2)令=(x1+x2)/2;(3)如果f()*f(x1)0,方程的解在区间, x2上,则令x;否则,解在区间x1,,令x2=x;()反复步聚(2)、(3)直到f(x)满足精度规定。试定义一种类EQ,实现运用二分法

25、求方程a2+bx+=0在区间x1, x2内的一种解。具体规定如下:()私有数据成员fat a,b,c:存储方程的系数a,b和c。double x1, x2,x:x为方程在区间x1, 2上的解。int :如果在区间x1, x2内方程有解,则值为1,否则k值为;(2) 公有成员函数EU(flaa1, flot 1,float c):用参数a1,b1,c1分别初始化成员,b,c。void u(doublxx1,oule xx2, doblee):求方程ax+bx+=0在区间x1, xx2内的一种解x,规定最后误差|()|cassEQprivat:floa a,b,;obl x,x,;it k;pbl

26、ic:EQU(float a1,floa b,flt c1);oid fu(duble xx,double x2,doble e);id pin(); EQU::(fot 1,flat 1,loat1) aa1;b=b;c=c1; void EQ:fu(oube x,oble xx2,dubl e) x1x1;xx2; doul f=a*x1x+b*x1+c,fa*x2*x2+b*x2+c; dobf; do (x+x2)2; f=a*xxb*xc; if(f1f0) 1; else =; wie(fab(f)=e);o EQU::print() couxenl;vd mi()double a

27、,b,c;dou x1,x2,e; cot; coutx1x; cute;Q s(a,b,); s.fn(x1,2,e); cout该方程在区间0,10中的解是:;/0.701561sprint();函数编程题1. 定义两个独立函数,voi in(n );实现将一维数组元素一行输出,vi so(nt b,in n);实现将一维数组的元素按从大到小排序;在主函数中定义一种整型数组a8,从键盘输入8个数为数组元素赋值,分别调用两个函数。1.答案nc iosream.od pint(ib) or(int i;i;i+) couit; coutend;oi sort(i b,it ) f(in i=0

28、;in-1;+)fo(i j=i1;jn;+) if(ibj) nt t; t=i; b=b; bj;voiin()i a8; cot请输入8个数寄存到一维数组:ai;pint(a); ot(,8); int();2.字符串解决:设计一种通用函数实目前字符串s中从第m个字符开始插入字符串s2,在主程序中对该函数进行测试。初始状态:s1: acdfg s: 134输入插入字符串的位置:3目的状态:s1: ab124fg 2: 342.答案incl iclude voi sert(char ,ar s2,i m) char p-1,*q=s2; har r=s1+strln(s1)-1; inta

29、=strle()-1; hile(r) *(r+)*r; r-; wile(*q!=0) *p+=q+;vdprnt(char s,chars2) cout1:s1endl;ot s2:2endl;void ai()chars1100abcdg,s10=123;n m;cout初始状态:; prin(1,s2);cout输入插入字符串的位置:m;int(s,s2,);cotoi swap(in &t1, int &t2) ntt=1; t1=t2; tt;adjus(n , in n) it i=, jn-1; whl(1) wile(p) i+; hile(j0) -; i(j) swa(p

30、i, j); lse brek; i+; -; void main( ) in a12= -1,2,-,,5,-6,8,-9,-10,1,2; ut解决前的数组为:endl; for(intk=0; k12; k+) utak ; djus(a, 12); coutn解决后的数组为:end; fo(=; 12; k+) cout ; coutendl;4编写程序:定义一种函数odtor(n,int r);实现将十进制整型数转换为进制数。从键盘输入十进制数和要转换的进制数,在主函数中调用该函数实现进制转换。例如 输入8 2 输出成果为100 输入2 6 输出成果为14.#inde iotram.hvoid dor(int n,i r)int=0,s10; while(n!=) si=%r; n=n; i+;r(n ji;j0;j-) cotsj; cotedl;void ai() it n,r; ut从键盘输入一种十进制整型数n和要转换的进制r n; tor(,r);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!