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

上传人:人*** 文档编号:476871822 上传时间:2023-08-21 格式:DOCX 页数:24 大小:46.77KB
返回 下载 相关 举报
应用实践VC++编程题及答案_第1页
第1页 / 共24页
应用实践VC++编程题及答案_第2页
第2页 / 共24页
应用实践VC++编程题及答案_第3页
第3页 / 共24页
应用实践VC++编程题及答案_第4页
第4页 / 共24页
应用实践VC++编程题及答案_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《应用实践VC++编程题及答案》由会员分享,可在线阅读,更多相关《应用实践VC++编程题及答案(24页珍藏版)》请在金锄头文库上搜索。

1、类编程题1. 【题目】试定义一个类NUM验证下列命题是否成立:任意一个正 整数与其反序数相加,得到一个新的正整数,再对这个新正整数重复 上述步骤,最终一定可以得到一个回文数。例如,正整数350的反序数为 053(即 53),350+53=403, 403+304=707, 707 是回文数,命题 成立。又如,正整数2015的反序数为5102, 2015+5102=7117,7117 是回文数,命题成立。具体要求如下:私有数据成员int num :存放用于验证命题的正整数。公有成员函数NUM(int x):构造函数,用x初始化数据成员numvoid set(int a):将 num的值设置为 a

2、。int yn(int n) :判断n是否回文数,若是,返回1;否则返回0。void fun():使用num验证命题是否成立,并显示验证过程。在主函数中对该类进行测试。输出示例:num=350的验证过程如下:350+53=403403+304=707命题成立!num=2015的验证过程如下: 2015+5102=7117命题成立!#include class NUMprivate:int num;public:NUM(int x);void set(int a);int yn(int n);void fun();NUM:NUM(int x)num=x;void NUM:set(int a)nu

3、m=a;int NUM:yn(int n)int t=n,s=0;while(t)s=s*10+t%10;t/=10;if(s=n) return 1;else return 0;void NUM:fun()int m;coutnum=num 的验证过程如下: endl; while(1)int n=num,s=0; /350dos=s*10+n%10;/ 053n/=10;while(n);m=s+num; /403命题成立!if(yn(m)=1) coutnum+s=mnendl;break;else coutnum+s=mendl;num=m;void main()NUM arr(350

4、);arr.fun();arr.set(2015);arr.fun ();2. 【题目】试定义一个实现计算学生课程成绩的类STU对学生学期总评成绩进行计算并排序。具体要求如下:(1) 私有数据成员int norm, ex, final,overall:分别表示平时成绩、实验成绩、期末考试和总评成绩。char name15 :学生姓名。(2) 公有成员函数void init(char *name1, int nor1, int ex1, int fin1) :用参数 name1,nor1,exp1,fin1 分别初始化成员 name, norm, ex, final。void fun( ):计算

5、学生的总评成绩。计算方法为:总评成绩 =平时成 绩占*20%+实验成绩占 *25%+期末成绩占 *55%。总评成绩计算时要求四 舍五入,并且期末考试成绩不足 50 分时,则期末考试成绩即为总评 成绩。friend void sort(STU st, int n) :友元函数,对 st 按总评成绩 进行从大到小排序。void print( ) :输出该学生信息。(3) 在主函数中先定义一个有 5 个元素的对象数组,用循环语句输入 学生信息,并根据这些信息利用成员函数 init() 更新学生信息,然 后使用函数 sort() 对数组排序,最后输出排序后的学生信息。 输入/输出示例 (下划线部分为键

6、盘输入 ): 请输入姓名、平时成绩、实验成绩、期末成绩: AAA 82 75 58 请输入姓名、平时成绩、实验成绩、期末成绩: BBB 93 60 84 请输入姓名、平时成绩、实验成绩、期末成绩: CCC 67 82 81 请输入姓名、平时成绩、实验成绩、期末成绩: DDD 54 78 51 请输入姓名、平时成绩、实验成绩、期末成绩: EEE 91 52 41 按总评成绩排序后: 姓名 平时成绩 实验成绩 期末成绩 总评成绩BBB93608480CCC67828178AAA82755867DDD54785158EEE91524141#include#include class STU priv

7、ate:int norm,ex,final,overall;char name15;public:void init(char *name1,int norm1,int ex1,int fin1);void fun();friend void sort(STU st,int n);void print();void STU:init(char *name1,int norm1,int ex1,int fin1) strcpy(name,name1); norm=norm1;ex=ex1;final=fin1; overall=0;void STU:fun()if(final=50) overa

8、ll=int(norm*0.2+ex*0.25+final*0.55+0.5);else overall=int(final+0.5);void sort(STU st,int n) for(int i=0;in-1;i+) for(int j=i+1;jn;j+) if(sti.overallstj.overall) int t; t=sti.overall;sti.overall=stj.overall;stj.overall=t;void STU:print() coutnametnormtextfinaltoverallendl;void main()STU s3;char name1

9、00;int norm,ex,fin;for(int i=0;i3;i+) cout 请输入姓名、平时成绩、实验成绩、期末成绩:namenormexfin;si.init(name,norm,ex,fin);si.fun();cout 按总评成绩排序后: n 姓名 平时成绩 实验成绩 期末成绩 总评成绩 endl; sort(s,3);for(i=0;i3;i+) si.print();3【题目】试定义一个类 Array ,首先求各列元素中的合数 (非素数) 之和,再将数组各列以其合数之和的大小从大到小排序, 具体要求如 下:(1) 私有数据成员int a45 :需要排序的二维数组。(2) 公

10、有成员函数Array(int t5, int n) :构造函数,用参数 t 初始化成员数组 a, n 表示数组 t 的行数。int comp(int n) :判断整数 n 是否为合数,如果是合数,返回值为 1,否则返回值为 0。int sum_comp(int j) :求数组 a 第 j 列元素中所有合数之和。void exch(int j1, int j2):交换数组 a 的第 j1, j2 列元素。void fun() :根据题意对二维数组进行列排序。void print() :以矩阵的形式输出成员数组。(3) 在主函数中定义一个二维数组, 并使用该数组对类 Array 进行测 试。输出示

11、例:原数组:1012541516178191011121314151670181920排序后的数组:12151054171016819121511131470201618193答案#include class Arrayprivate:int a45;public:Array(int t5,int n); int comp(int n);int sum_comp(int j); void exch(int j1,int j2); void fun();void print();Array:Array(int t5,int n) for(int i=0;in;i+)for(int j=0;j5;

12、j+) aij=tij;int Array:comp(int n)int flag=0;for(int i=2;in;i+) if(n%i=0) flag=1; return flag;int Array:sum_comp(int j)int s=0;for(int i=0;i4;i+) if(comp(aij)=1) s+=aij;cout&sendl; return s;void Array:exch(int j1,int j2)for(int i=0;i4;i+)int d=aij1;aij1=aij2;aij2=d;void Array:fun()for(int i=0;i4;i+)f

13、or(int j=i+1;j5;j+)if(sum_comp(i)sum_comp(j)exch(i,j);void Array:print()for(int i=0;i4;i+)for(int j=0;j5;j+)coutaijt;coutendl;void main(void)int b45=10,12,5, 4,15,16,17,8,19,10,11,12,13,14,15,16,70,18,19,20;Array arr(b,4);cout 原数组: endl;arr.print();arr.fun();cout 排序后的数组: endl;arr.print();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) 私有数据成员float a,b,c :保存方程的系数 a,b 和 c。double x :x 为所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号