资源描述
编程题复习方法:做编程题时,先别着急动手,一定认真把题意理解清楚,在纸上写出解题方法和关键语句(用到什么算法),最后按照输入数据-处理数据-输出数据的流程实现主程序和相关函数。(按步骤给分,人工阅卷)编写程序时一定要注意格式,要有缩进或退格。1、 定义类的框架2、 成员函数的实现3、 在主函数中测试类具体实现的公式:class 类名private: 私有数据成员;public: 数据成员; 成员函数;(构造函数和析构函数); 类名:类名() /构造函数成员函数的个数与类中的个数相同,函数名前加类名:void main()类名 对象名( 参数 );/是否带参数取决于构造函数构造函数的定义方法 数据成员是内置类型变量,直接用该类型的形参变量初始化数据成员。class A int i;public: A(int x) i=x;数据成员是一维数组,通过一个for循环将形参数组元素初始化一维数组成员。class A int t5;public: A(int b,int n) for(int i=0;in;i+)ti=bi; ;数据成员是二维数组,通过双重循环将形参数组元素初始化二维数组成员。class A int t34;public: A(int b4,int n) for(int i=0;in;i+) for(int j=0;j4;j+)tij=bij;数据成员是一维字符数组,可以用字符串拷贝函数strcpy,将形参字符数组中的字符串,初始化字符数组成员。#include #include class A char t100;public: A(char b ) strcpy(t,b);数据成员是字符类型指针变量,先用new动态申请长度为形参指针指向的字符串长度+1的内存空间,把返回的首地址赋给指针成员,再把形参指向字符串拷贝到动态数组中。#include #include class A char *s;public: A(char *b) if(b) s=new charstrlen(b)+1; strcpy(s,b);数据成员是数值类型指针变量,先用new动态申请长度为形参数组长度的内存空间,把返回的首地址初始化指针成员,再把形参数组元素循环赋给动态数组元素。#include class A int *s;public: A(int b 10) s=new int10; int i; for(i=0;i10;i+) si=bi; ;编程的基本类型题分析:一、学生成绩春VC01 (1)排序算法(2)四舍五入算法int(x+0.5)保留整数 int(x*10+0.5)/10.0 保留小数点后一位int(x*100+0.5)*100)/100.0 保留小数点后两位(3)友元函数的定义和调用(4)字符串拷贝函数【题目】试定义一个实现计算学生课程成绩的类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( ):计算学生的总评成绩。计算方法为:总评成绩=平时成绩占*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 80CCC 67 82 81 78AAA 82 75 58 67DDD 54 78 51 58EEE 91 52 41 41秋VC02编程题四舍五入算法 int(x+0.5)保留整数 int(x*10+0.5)/10.0 保留小数点后一位int(x*100+0.5)*100)/100.0 保留小数点后两位【题目】假设二维数组的一行代表一名学生课程情况记录,前5列为考勤记录(出勤值为1,缺勤值0),第610列为作业得分记录(5分制),第11列为实验考核成绩,第12列为期末考试成绩。学生课程总评成绩的计算式为(四舍五入保留整数):平时成绩*20%+实验成绩*30%+期末考试成绩*50%,其中,平时成绩计算方法为:出勤一次记10分,作业每得1分,平时成绩记2分。例如,设有如下学生课程情况记录:考勤1考勤2考勤3考勤4考勤5作业1作业2作业3作业4作业5实验期末总评111104452490891011143434857511011345249580表中第一行学生的平时成绩计算为:(1+1+1+1+0)*10+(4+4+5+2+4)*2=78,则其总评成绩计算为78*0.2+90*0.3+89*0.5=87.1,总评成绩四舍五入计为87分。试定义一个类Array,根据上述要求计算学生的总评成绩。具体要求如下:(1)私有成员:l int a313: 学生课程情况记录数组。(2)公有成员:l Array (float t13, int n): 构造函数,用参数t初始化成员数组a,参数n为t的行数。l int sum(int k): 辅助函数,计算并返回成员数组a的第k行学生的平时成绩。l void fun( ): 根据题意计算每个学生的总评成绩。l void print( ): 按示例格式输出每个学生的信息。注意总评成绩结果要四舍五入。(3)在主函数中给定原始数组(可利用题目中的样例数据,总评成绩暂定为0),并用该数组对类Array进行测试。 输出示例:考勤: 1,1,1,1,0,作业: 4,4,5,2,4,平时成绩: 78 实验: 90 期末: 89 总评: 87考勤: 1,0,1,1,1,作业: 4,3,4,3,4,平时成绩: 76 实验: 85 期末: 75 总评: 78考勤: 1,1,0,1,1,作业: 3,4,5,2,4,平时成绩: 76 实验: 95 期末: 80 总评: 84【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。1答案#include#include class STUprivate: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) overall=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)STU t;t=sti;sti=stj;stj=t;void STU:print()coutnametnormtextfinaltoverallendl;void main()STU s3;char name100;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();2答案#include using namespace std;class Arrayprivate:int a313;public:Array(float t13,int n);int sum(int k);void fun();void print();Array:Array(float t13,int n) for(int i=0;in;i+) for(int j=0;j13;j+) aij=tij;int Array:sum(int k)int s1=0,s2=0,s=0; for(int i=0;i5;i+)s1+=aki; for( i=5;i10;i+) s2+=aki; s=s1*10+s2*2; return s;void Array:fun() for(int i=0;i3;i+)ai12=int(sum(i)*0.2+ai10*0.3+ai11*0.5+0.5);void Array:print()for(int i=0;i3;i+)cout考勤:; for(int j=0;j5;j+) coutaij,; coutendl; cout作业:; for(j=5;j10;j+) coutaij,; coutendl; cout平时成绩:sum(i)t; cout实验成绩:ai10t; cout期末成绩:ai11t; cout总评成绩:ai12t; coutendl; void main()float b313=1,1,1,1,0,4,4,5,2,4,90,89,1,0,1,1,1,4,3,4,3,4,85,75,1,1,0,1,1,3,4,5,2,4,95,80; Array arr(b,3); arr.fun(); arr.print();二、二维数组问题春VC02 1素数算法,2从大到小排序算法3数据交换【题目】试定义一个类Array,首先求各列元素中的合数(非素数)之和,再将数组各列以其合数之和的大小从大到小排序,具体要求如下: (1) 私有数据成员int a45:需要排序的二维数组。(2) 公有成员函数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进行测试。输出示例:原数组:10 12 5 4 1516 17 8 19 1011 12 13 14 1516 70 18 19 20排序后的数组:12 15 10 5 417 10 16 8 1912 15 11 13 1470 20 16 18 19秋VC031素数算法,2从大到小排序算法3数据交换【题目】试定义一个类Array,将二维数组各行按其各行元素中所有素数之和从大到小排序,具体要求如下:(1) 私有数据成员l int a54:待处理的数组。(2) 公有成员函数l Array(int t4, int n):构造函数,用参数t初始化成员数组a,n为数组t的行数。l int prime(int n):判断整数n是否为素数,如果是素数,返回值为1,否则返回值为0。l int sum_prime(int i):求数组a中第i行元素中所有素数之和。l void exch(int i1, int i2):交换数组a的第i1, i2行元素。l void fun( ):根据题意对二维数组进行行排序。要求排序过程中交换数据时使用成员函数exch()。l void print( ):以矩阵的形式输出成员数组。(3) 在主函数中定义一个二维数组,并使用该数组对类Array进行测试。输出示例:原数组:10 12 5 415 16 17 819 10 11 1213 14 15 1670 18 19 20排序后的数组:19 10 11 1270 18 19 2015 16 17 813 14 15 1610 12 5 4【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。秋VC041从大到小排序算法2数据交换【题目】试定义一个类Array,将二维数组各行按其各行元素中最大值的大小排序,具体要求如下:(1) 私有数据成员l int a54:需要排序的数组。(2) 公有成员函数l Array(int t4, int n):构造函数,用参数t初始化成员数组a,n为数组t的行数。l int max(int *p,int n):求指针p所指向的一维数组中n个元素的最大值。l void exch(int i1, int i2):交换数组a的第i1, i2行。l void fun():根据题意对二维数组进行行排序。提示:利用成员函数max()计算每行的最大元素。l void print():以矩阵的形式输出成员数组a。(3) 在主函数中定义一个二维数组,并使用该数组对类Array进行测试。输出示例:原数组:10 12 5 415 16 17 819 10 11 1213 14 15 1670 18 19 20排序后的数组:70 18 19 2019 10 11 1215 16 17 813 14 15 1610 12 5 4秋VC05编程题1奇数与偶数2选择排序【题目】试定义一个类Array,实现对二维数组进行按行排序的功能。要求奇数行中的元素按升序排列,偶数行中的元素按降序排列(下标从0开始计数)。具体要求如下:(1)私有成员:l int a45: 需要排序的数组。(2)公有成员:l Array(int t5, int n): 构造函数,用参数t初始化成员数组a,参数n为t的行数。l void sort(int *p, int n, int f): 辅助函数,对指针p所指向的数组排序。其中,n为数组p中元素的个数;当参数f的值为奇数时按升序排序,否则按降序排序。l void fun( ): 根据题意多次调用sort( )函数实现成员数组a的排序。l void print( ): 按矩阵形式输出成员数组。(3)在主函数中给定原始数组,并用该数组对类Array进行测试。要求输出处理前和处理后的数组。输出示例:原数组:1 3 9 5 67 6 7 5 72 5 4 5 67 1 5 4 5处理后数组:9 6 5 3 15 6 7 7 76 5 5 4 21 4 5 5 7【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。1答案#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;j+) aij=tij;int Array:comp(int n) for(int i=2;in;i+) if(n%i=0) break; if(i=n) return 0; return 1;int Array:sum_comp(int j)int s=0;for(int i=0;i4;i+) if(comp(aij)=1) s+=aij; return s;void Array:exch(int j1,int j2) for(int i=0;i4;i+) int d; d=aij1; aij1=aij2; aij2=d;void Array:fun()for(int i=0;i4;i+)for(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()int a45=10,12, 5, 4,15,6,17, 8,19,10,11,12, 13,14,15,16,70,18,19, 20;Array arr(a,4);cout原数组:endl;arr.print();arr.fun();cout排序后的数组:endl;arr.print();2答案#include class Arrayprivate:int a54;public:Array(int t4,int n);int prime(int n);int sum_prime(int i);void exch(int i1,int i2);void fun();void print();Array:Array(int t4,int n) for(int i=0;in;i+) for(int j=0;j4;j+) aij=tij;int Array:prime (int n) for(int i=2;in;i+)if(n%i=0) return 0;return 1;int Array:sum_prime (int i)int s=0; for(int j=0;j4;j+)if(prime(aij) s+=aij;return s;void Array:exch(int i1,int i2) for(int j=0;j4;j+) int d=ai1j; ai1j=ai2j; ai2j=d; void Array:fun ()for(int i=0;i4;i+)for(int j=i+1;j5;j+)if(sum_prime(i)sum_prime(j) exch(i,j);void Array:print() for(int i=0;i5;i+)for(int j=0;j4;j+) coutaijt; coutendl;void main() int b54=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原数组:;coutendl;arr.print();arr.fun();cout排序后的数组:;coutendl;arr.print();3答案#include class Arrayprivate:int a54;public:Array(int t4,int n);int max(int *p,int n);void exch(int i1,int i2);void fun();void print();Array:Array(int t4,int n) for(int i=0;in;i+) for(int j=0;j4;j+) aij=tij;int Array:max(int *p,int n)int s=0; for(int i=0;in;i+) s+=pi;return s;void Array:exch(int i1,int i2) for(int j=0;j4;j+) int d=ai1j;ai1j=ai2j;ai2j=d; void Array:fun () for(int i=0;i4;i+) for(int j=i+1;j5;j+) if(max(ai,5)max(aj,5) exch(i,j);void Array:print () for(int i=0;i5;i+) for(int j=0;j4;j+) coutaijt; coutendl; void main()int b54=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原数组:endl;arr.print ();arr.fun();cout排序后数组:endl;arr.print ();4答案#include class Arrayprivate:int a45;public: Array(int t5,int n);void sort(int *p,int n,int f);void fun();void print();Array:Array(int t5,int n)for(int i=0;in;i+)for(int j=0;j5;j+)aij=tij;void Array:sort(int *p,int n,int f)if(f%2=1) for(int i=0;in-1;i+) for(int j=i+1;jn;j+) if(pipj) int t=pi;pi=pj;pj=t; else for(int i=0;in-1;i+) for(int j=i+1;jpj) int t=pi;pi=pj;pj=t; void Array:fun() for(int i=0;i4;i+) sort(ai,5,i+1);void Array:print()for(int i=0;i4;i+) for(int j=0;j5;j+) coutaijt; coutendl; void main()int b45=1,3,9,5,6,7,6,7,5,7,2,5,4,5,6,7,1,5,4,5;Array arr(b,4);cout原数组:endl;arr.print();arr.fun ();cout处理后的数组:0,则方程在区间x1, x2上无解;(2)令x=(x1+x2)/2;(3)如果f(x)*f(x1)0,方程的解在区间x, x2上,则令x1=x;否则,解在区间x1, x,令x2=x;(4)重复步聚(2)、(3)直到f(x)满足精度要求。试定义一个类EQU,实现利用二分法求方程ax2+bx+c=0在区间x1, x2内的一个解。具体要求如下:(1) 私有数据成员l float a,b,c:存储方程的系数a,b和c。l double x1, x2, x:x为方程在区间x1, x2上的解。l int k:如果在区间x1, x2内方程有解,则k值为1,否则k值为0;(2) 公有成员函数l EQU(float a1, float b1, float c1):用参数a1,b1,c1分别初始化成员a,b,c。l void fun(double xx1, double xx2, double e):求方程ax2+bx+c=0在区间xx1, xx2内的一个解x,要求最终误差|f(x)|e。l void print():若方程有解,则输出所求得的解;若无解,则输出“方程在给定区间内无解”。 (3) 在主函数中首先输入方程的系数、区间和误差要求,建立EQU对象并初始化,然后调用fun()函数求出方程的解,最后调用print()函数输出所求得的解。正确程序的输入/输出结果如下(下划线部分为键盘输入):请输入方程的系数(a,b,c):1 5 -4请输入区间(x1,x2)边界:0 10请输入误差要求(e):0.00001该方程在区间0,10中的解是:0.7015611答案#include #include class EQUprivate:float a,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 f;double f1=a*x1*x1+b*x1+c;double f2=a*x2*x2+b*x2+c;if(f1*f20) k=0;else do x=(x1+x2)/2; f=a*x*x+b*x+c; if(f*f10) x1=x; else x2=x;while(fabs(f)e);k=1;void EQU:print()if(k=1) coutxendl;else cout方程在给定区间内无解endl;void main() float a,b,c; float x1,x2;double e; coutabc; coutx1x2; coute; EQU t(a,b,c); t.fun (x1,x2,e);cout该方程在区间x1,x2中的解是; t.print();秋VC04切线法求方程的解【题目】已知切线法求方程 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) 私有数据成员l float a,b,c:保存方程的系数a,b和c。l double x:x为所求得的解。(2) 公有成员函数l EQU(float a1, float b1, float c1):构造函数,用参数a1, b1, c1分别初始化成员a,b,c。l 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)|e为止。l 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【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。2答案#include class EQUprivate:float a,b,c;double x;public: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;do double f0=a*x0*x0+b*x0+c; double ff=2*a*x0+b; x=x0-f0/ff; f=a*x*x+b*x+c; double f1=2*a*x+b; x0=x-f/f1; while(fe);void EQU:print () coutxendl;void main() float a,b,c; double x0,e; coutabc; coutx0; coute; cout该方程的解是:; EQU t(a,b,c); t.fun (x0,e); t.print();四、最大公约数和最小公倍数问题秋VC01编程题1最大公约数2最小公倍数【题目】试定义一个类NUM,求成员数组所有元素的最大公约数和最小公倍数。具体要求如下:(1)私有成员:l int a5, m, n: m为数组a的最大公约数,n为数组a的最小公倍数。(2)公有成员:l NUM(int t, int n): 构造函数,用参数t初始化成员数组a,参数n为参数t中元素的个数。l int fm(int k): 辅助函数,判断整数k是否为成员数组a的所有元素的公约数,如果是,则返回值1,否则返回值0。l int fn(int k): 辅助函数,判断整数k是否为成员数组a的所有元素的公倍数,如果是,则返回值1,否则返回值0。l void fun( ): 用穷举法分别求数组a的最大公约数和最小公倍数。l void print( ): 按示例格式输出成员数据a,m和n。(3)在主函数中用一个数组对类进行测试。输出示例:数组: 12 15 18 39 9最大公约数: 3 最小公倍数: 2340【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。答案:#include using namespace std;class NUMprivate:int a5,m,n;public:NUM(int t,int n);int fm(int k);int fn(int k); void fun();void print();NUM:NUM(int t,int n) for(int i=0;in;i+) ai=ti; m=1;int NUM:fm(int k) for(int i=0;i5;i+)if(ai%k!=0) return 0;return 1;int NUM:fn(int k) for(int i=0;i5;i+)if(k%ai!=0) return 0;return 1;void NUM:fun()int max=a0;int min=a0;for(int i=0;i5;i+)if(maxai) min=ai;for(int k=max;k0;k-)if(fm(k)=1) m=k; break;for(k=min;k+)if(fn(k)=1)n=k;break;void NUM:print() cout数组:; for(int i=0;i5;i+) coutait; coutendl; cout最大公约数:mt; cout最小公倍数:nendl;void main() int b5=12,15,18,39,9;NUM nn(b,5);nn.fun();nn.print();五、字符串问题秋VC06编程题1大小写字母转换2动态申请空间new和释放空间delete【题目】试定义一个类STR,去除英文字符串中的空格,并将各单词首字母改为大写。已知各单词之间以空格字符分隔。具体要求如下:(1)私有成员:l char *s: 需要处理的字符串。(2)公有成员:l STR (char *p): 构造函数,用参数p初始化数据成员s。注意为数据成员s分配相应的存储空间。l void fun( ): 根据题意对数据成员s进行处理。l void print( ): 输出数据成员s。l STR( ): 析构函数。(3)在主函数中输入一个英文字符串,并用该字符串对类STR进行测试。输入/输出示例(下划线部分为键盘输入):Input a string: I am a student.I am a student.IAmAStudent.【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。春VC06【题目】定义一个字符串类String,将字符串b拼接到字符串a中,(不能用拼接函数)。具体要求如下:(1)私有数据成员char a100,b100;(2)公有成员函数String(char c,char d):构造函数,用参数初始化数据成员void fun():功能函数,实现将b拼接到a的后面void insert(int m);实现将字符数组b中的字符串插入到字符数组a中的第m个字符的位置。void show():功能函数, 输出数据成员(3)用数据,abc在主函数中对类测试。输入/输出示例(下划线部分为键盘输入):Input the number m: 3 插入字符串后的a数组:123abc456789拼接后的数组a: 123abc456789abc【要求】打开T盘中myfc.cpp文件(空文件),编写后的源程序文件myfc.cpp必须保存在T盘的根目录下,供阅卷用。1答案#include #include class STRprivate:char *s;public:STR(char *p);void fun();void print();STR();STR:STR(char *p) s=new charstrlen(p)+1; strcpy(s,p);void STR:fun() char *p=s,*q; while(*p) if(*p= ) q=p+1;while(*q)if(*q=a&*q=z&*(q-1)= ) *q=*q-32;*(q-1)=*q;q+;*(q-1)=0; else p+;void STR:print() coutsendl;STR:STR() if(s) delete s;void main() char t100; cin.getline(t,100); STR str(t); str.print(); str.fun(); str.print();2答案#include #include class Stringchar a100,b100;public:String(char c
展开阅读全文