应用实践编程题答案new
更新时间:2024-01-01 19:02:01 阅读量: 教育文库 文档下载
- 比的应用实践题推荐度:
- 相关推荐
类编程题
1.【题目】试定义一个类NUM,验证下列命题是否成立:任意一个正整数与其反序数相加,得到一个新的正整数,再对这个新正整数重复上述步骤,最终一定可以得到一个回文数。例如,正整数350的反序数为053(即53),350+53=403, 403+304=707,707是回文数,命题成立。又如,正整数2015的反序数为5102,2015+5102 =7117,7117是回文数,命题成立。具体要求如下: 私有数据成员
intnum:存放用于验证命题的正整数。 公有成员函数
NUM(int x):构造函数,用x初始化数据成员num。 void set(int a):将num的值设置为a。
intyn(int n):判断n是否回文数,若是,返回1;否则返回0。 void fun():使用num验证命题是否成立,并显示验证过程。 在主函数中对该类进行测试。 输出示例:
num=350的验证过程如下: 350+53=403 403+304=707 命题成立!
num=2015的验证过程如下: 2015+5102=7117
命题成立!
2.【题目】试定义一个实现计算学生课程成绩的类STU,对学生学期总评成绩进行计算并排序。具体要求如下: (1) 私有数据成员
int norm, ex, final,overall:分别表示平时成绩、实验成绩、期末考试和总评成绩。 char name[15]:学生姓名。 (2) 公有成员函数
void init(char *name1, int nor1, int ex1, int fin1):用参数name1,nor1,exp1,fin1分别初始化成员name,norm, ex, final。 void fun( ):计算学生的总评成绩。计算方法为:总评成绩=平时成绩占*20%+实验成绩占*25%+期末成绩占*55%。总评成绩计算时要求四舍五入,并且期末考试成绩不足50分时,则期末考试成绩即为总评成绩。
friend void sort(STU st[], int n):友元函数,对st按总评成绩进行从大到小排序。
void print( ):输出该学生信息。
(3) 在主函数中先定义一个有5个元素的对象数组,用循环语句输入学生信息,并根据这些信息利用成员函数init()更新学生信息,然后使用函数sort()对数组排序,最后输出排序后的学生信息。 输入/输出示例(下划线部分为键盘输入):
请输入姓名、平时成绩、实验成绩、期末成绩:AAA 82 75 58
请输入姓名、平时成绩、实验成绩、期末成绩:BBB 93 60 84 请输入姓名、平时成绩、实验成绩、期末成绩:CCC 67 82 81 请输入姓名、平时成绩、实验成绩、期末成绩:DDD 54 78 51 请输入姓名、平时成绩、实验成绩、期末成绩:EEE 91 52 41 按总评成绩排序后:
姓名平时成绩实验成绩期末成绩总评成绩 BBB 93 60 84 80 CCC 67 82 81 78 AAA 82 75 58 67 DDD 54 78 51 58 EEE 91 52 41 41
3.【题目】试定义一个类Array,首先求各列元素中的合数(非素数)之和,再将数组各列以其合数之和的大小从大到小排序,具体要求如下:
(1) 私有数据成员
int a[4][5]:需要排序的二维数组。 (2) 公有成员函数
Array(int t[][5], int n):构造函数,用参数t初始化成员数组a,n表示数组t的行数。
int comp(int n):判断整数n是否为合数,如果是合数,返回值为1,否则返回值为0。
intsum_comp(int j):求数组a第j列元素中所有合数之和。
void exch(int j1, int j2):交换数组a的第j1, j2列元素。 void fun():根据题意对二维数组进行列排序。 void print():以矩阵的形式输出成员数组。
(3) 在主函数中定义一个二维数组,并使用该数组对类Array进行测试。 输出示例: 原数组:
10 12 5 4 15 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
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为所求得的解。 (2) 公有成员函数
EQU(float a1, float b1, float c1):构造函数,用参数a1, b1, c1分别初始化成员a,b,c。
void fun(double x0, double e ):求方程在x0附近的一个解,所采用的算法是:依次计算
x1=x0-f(x0)/f’(x0),
x2=x1-f(x1)/f’(x1),…, xn=xn-1-f(xn-1)/f’(xn-1),直到|f(xn)| void print( ):输出所求得的解。 (3) 在主函数中建立EQU对象,并求出方程 f(x)=2x2+6x-7=0 在x=5.0附近的一个解,要求最终误差|f(x)|<10-5,最后调用print()函数输出所求得的解。 正确程序的输入/输出结果如下(下划线部分为键盘输入): 请输入方程的系数(a,b,c):2 6 -7 请输入预估的初始解x0: 5 请输入误差要求(e):0.00001 该方程的解是:0.897916 5.【题目】试定义一个类Array,将二维数组各行按其各行元素中所有素数之和从大到小排序,具体要求如下: (1) 私有数据成员 int a[5][4]:待处理的数组。 (2) 公有成员函数 EQU(float a1,float b1,float c1); void fun(double x0,double e); void print(); }; EQU::EQU(float a1,float b1,float c1){ a=a1;b=b1;c=c1; x=0.0; } void EQU::fun (double x0,double e){ double f; double f0=a*x0*x0+b*x0+c; doubleff=2*a*x0+b; while(fabs(f0)>e) { x0=x0-f0/ff; f0=a*x0*x0+b*x0+c; ff=2*a*x0+b; } x=x0; } void EQU::print (){ cout< void main(){ floata,b,c; double x0,e; cout<<\请输入方程的系数(a,b,c):\cin>>a>>b>>c; cout<<\请输入预估的初始解x0:\cin>>x0; cout<<\请输入误差要求(e):\cin>>e; cout<<\该方程的解是:\ EQU t(a,b,c); t.fun (x0,e); t.print(); } 5.#include class Array{ private: int a[5][4]; public: Array(int t[][4],int n); int prime(int n); intsum_prime(inti); voidexch(int i1,int i2); void fun(); void print(); }; Array::Array(int t[][4],int n){ for(inti=0;i int Array::prime (int n){ for(inti=2;i int Array::sum_prime (inti){ int s=0; for(int j=0;j<4;j++) if(prime(a[i][j])) s+=a[i][j]; return s; } void Array::exch(int i1,int i2){ for(int j=0;j<4;j++) { int d=a[i1][j]; a[i1][j]=a[i2][j]; a[i2][j]=d; } } void Array::fun (){ for(inti=0;i<4;i++) for(int j=i+1;j<5;j++) if(sum_prime(i) void Array::print(){ for(inti=0;i<5;i++) { for(int j=0;j<4;j++) cout< void main(){ int b[5][4]={10,12,5,4,15,16,17,8,19,10,11,12,13,14,15,16,70,18,19,20}; Array arr(b,5); cout<<\原数组:\ cout< 6.#include ID(char * s); void fun(); void print(); ~ID(); }; ID::ID(char * s){ id=new char [strlen(s)+1]; strcpy(id,s); y=0; m=0; d=0; sex=new char[5]; sex[0]='\\0'; yes=0; } void ID::fun( ){ inti=6; while(i<10) y=y*10+id[i++]-'0'; while(i<12) m=m*10+id[i++]-'0'; while(i<14) d=d*10+id[i++]-'0'; if((id[16]-'0')%2==1) strcpy(sex,\男\ else strcpy(sex,\女\int age=2015-y; if(age<=40&&strcmp(sex,\女\ yes=1; if(age<=35&&strcmp(sex,\男\ yes=1; } void ID::print( ){ cout<<\身份证号:\ cout<<\出生日期:\ cout<<\性别:\ cout<<\是否青年:\ if(yes==1) cout<<\是\ else cout<<\不是\} ID::~ID(){ if(id) delete []id; if(sex) delete []sex; } void main(){ char card1[100]=\ //char card2[100]; //321102198103011213 cout<<\:\ // cin>>card2; ID person(card1); person.fun(); person.print(); } 7.#include class Array{private: double a[5],b[5]; public: Array(double t[], int n); doubleave(); doubledat(); void fun(); void print(); }; Array::Array(double t[], int n){ for(inti=0;i double Array::ave(){ double s=0; for(inti=0;i<5;i++) s+=a[i]; return s/5; } double Array::dat(){ double s=0; for(inti=0;i<5;i++) s+=(a[i]-ave())*(a[i]-ave()); return s/5; } void Array::fun(){ double pi=3.1415926,e=2.71828; double t=sqrt(2*pi*dat()),s; for(inti=0;i<5;i++){ s=-(a[i]-ave())*(a[i]-ave())/(2*dat()); b[i]=pow(e,s)/t; }} void Array::print(){ cout<<\原数组a:\ for(inti=0;i<5;i++) cout< void main(){ double t[5]={6.1,2.6,15.8,4.3,1.72}; Array arr(t,5); arr.fun(); arr.print(); } 8.#include floata,b,c; double x1,x2,x; int k; public: EQU(float a1,float b1,float c1); void fun(double xx1,double xx2,double e); void print(); }; EQU::EQU(float a1,float b1,float c1){ a=a1;b=b1;c=c1; } void EQU::fun(double xx1,double xx2,double e){ x1=xx1;x2=xx2; double f1=a*x1*x1+b*x1+c,f2=a*x2*x2+b*x2+c; double f; if(f1*f2>0)k=0; else k=1; x=(x1+x2)/2; f=a*x*x+b*x+c; while(fabs(f)>=e&&k) { if(f1*f>0) x1=x; else x2=x; x=(x1+x2)/2; f=a*x*x+b*x+c; } } }; void EQU::print(){ if(k)cout< else cout<<”无解”< void main(){ floata,b,c; double x1,x2,e; cout<<\请输入方程的系数(a,b,c):\ cin>>a>>b>>c; cout<<\请输入区间([x1,x2])边界:\0 10 cin>>x1>>x2; cout<<\请输入误差要求(e):\0.00001 cin>>e; EQU s(a,b,c); s.fun(x1,x2,e); cout<<\该方程在区间[0,10]中的解是:\0.701561 s.print (); } 函数编程题答案 1.答案 #include void sort(int b[],int n){ for(inti=0;i void main(){ int a[8]; cout<<\请输入8个数存放到一维数组a:\for(inti=0;i<8;i++) cin>>a[i]; print(a); sort(a,8); print(a); } 2.答案 #include void insert(char s1[],char s2[],int m){ char *p=s1+m-1,*q=s2; char *r=s1+strlen(s1); int a=strlen(s2); while(p<=r){ *(r+a)=*r; r--; } while(*q!='\\0') *p++=*q++; } void print(char s1[],char s2[]){ cout<<\ cout<<\ s2:\} void main(){ char s1[100]=\ int m; cout<<\初始状态:\print(s1,s2); cout<<\输入插入字符串的位置:\cin>>m; insert(s1,s2,m); cout<<\目标状态:\ print(s1,s2); } 3.#include void adjust(int p[], int n) { inti=0, j=n-1; while(1) { while(p[i]>0) i++; while(p[j]<0) j--; if(i swap(p[i], p[j]); else break; i++; j--; } } void main( ) { int a[12]= {-1,2,-3,-4,5,-6,7,8,-9,-10,11,12}; cout<<\处理前的数组为:\for(int k=0; k<12; k++) cout< cout<<\处理后的数组为:\for(k=0; k<12; k++) cout< 4.#include voiddtor(intn,int r){ inti=0,s[10]; while(n!=0){ s[i]=n%r; n=n/r; i++; } for(int j=i-1;j>=0;j--) cout< void main(){ intn,r; cout<<\从键盘输入一个十进制整型数n和要转换的进制r \cin>>n>>r; dtor(n,r);}
正在阅读:
应用实践编程题答案new01-01
高一生物教学进度表03-01
Office办公软件高级应用大赛01-08
一件有趣的事作文450字07-11
幸福作文800字06-30
第二节盐类的水解复习03-21
副厂房人工挖孔桩施工组织设计11-24
2018年宣传思想工作总结范文06-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实践
- 答案
- 编程
- 应用
- new
- 美国大城市的死与生
- 新人教版高中地理必修一第一节冷热不均引起大气运动第二学时
- 洞口临边作业安全防护方案与洞新八标桥梁及高边坡工程应急预案汇编
- 大学生创业计划大赛 - 图文
- 8月份公司综合检查结果通报
- 因公临时随船人员申办海员证管理规定 - 图文
- 2014准大学新生必读
- 2019年企业党建思想政治工作总结
- 隧道工程复习思考题
- 词根词缀WORD版
- 2018年经济普查先进事迹材料-word范文(13页)
- 浙江义乌市2019年中考科学试题(word版,含答案)
- AEO海关一般认证文件008 信息安全管理制度
- 再论用于否定形式“并”和“又”的异同-精品文档
- 苏教版七年级语文上册《冰心诗四首》学案
- 雨花台烈士观后感
- 殊胜的金刚乘的秘密修行原理!宗萨钦哲仁波切
- 思维技巧和态势语运用技巧
- 2010初级会计职称
- 关于公共关系的基本理论框架