admin 管理员组文章数量: 887053
2023年12月22日发(作者:镜像劫持修复工具)
面向对象程序设计课后题答案
第二章C++概述
【2.6】D
【2.7】D
【2.8】A
【2.9】A
【2.10】B
【2.11】A
【2.12】C
【2.13】B
【2.14】D
【2.15】C
【2.16】D
【2.17】C
【2.18】程序的运行结果:
101
【2.19】程序的运行结果:
10 10
【2.20】程序的运行结果:
10
20
【2.22】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。
#include
int main()
{
int *p,i;
p=new int[20];
1
p[0]=1;
p[1]=1;
for(i=2;i<20;i++)
{
}
for(i=0;i<20;i++)
{
}
return 0;
}
【2.23】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()3次,让它返回整数、长整数与双精度数的二次方根。
#include
#include
double sroot(int m)
{
return sqrt(m);
}
double sroot(long m)
{
return sqrt(m);
}
double sroot(double m)
{
return sqrt(m);
}
int main()
{
2
cout<
p[i]=p[i-1]+p[i-2];
cout<<"sroot(145)="< cout<<"sroot(123456)="< cout<<"sroot(1.44)="< return 0; } 【2.24】编写一个C++风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法? #include int main() { int k=0; for(int i=0;i<=20;i++) { } cout<<"将一元人民币兑换成1、2、5分的硬币,共有"< return 0; } 【2.25】编写一个C++风格的程序,输入两个整数,将它们按由小到大的顺序输出。要求使用变量的引用。 void change(int &a,int &b) { int t=a; a=b; 3 for(int j=0;j<=50;j++) { } if(100-5*i-2*j>=0) { } k++; b=t; } int main() { int m,n; cout<<"请输入两个整数:"; cin>>m>>n; if(m>n) change(m,n); cout<<"这两个数从小到大依次为: "< return 0; } 【2.26】编写一个C++风格的程序,用二分法求解f(x)==0的根。假设方程为:2*x*x*x-4*x*x+3*x-6=0 #include #include using namespace std; double f(double x) { return 2*x*x*x-4*x*x+3*x-6; } int main() { double left,right,middle,ymid,yleft,yright; cout<<"请按由小到大的顺序输入两个数:"; cin>>left>>right; yleft=f(left); yright=f(right); if(yleft*yright>0) 4 { } do{ middle=(left+right)/2; ymid=f(middle); if(yleft*ymid<0) { } if (yright*ymid<0) { } left=middle; yleft=ymid; right=middle; yright=ymid; cout<<"您输入的两个数,用二分法无法求得方程的根"< exit(0); }while(fabs(ymid)>=1e-6); cout<<"方程的根为:"< return 0; } 第三章 类和对象 【3.6】假设在程序中已经声明了类point,并建立了其对象p1和p4。请回答以下几个语句有什么区别? (1) point p2,p3; (2) point p2=p1; (3) point p2(p1); (4) p4=p1; 5 【解答】语句(1)使用带默认参数的构造函数,或不带参数的构造函数,定义了point类的两个对象p2,p3; 语句(2)在建立新对象p2时,用已经存在的对象p1去初始化新对象p2,在这个过程中用“赋值法”调用了拷贝构造函数; 语句(3)在建立新对象p2时,用已经存在的对象p1去初始化新对象p2,在这个过程中用“带入法”调用了拷贝构造函数; 【3.7】B 【3.8】C 【3.9】C 【3.10】B 【3.11】B 【3.12】A 【3.13】A 【3.14】 B 【3.15】A 【3.16】B 【3.17】B 【3.18】写出下面程序的运行结果。 10,20 30,48 50,68 70,80 90,16 11,120 【3.19】写出下面程序的运行结果。 Constructing 10 Destructing 100 Destructing 6 【3.20】写出下面程序的运行结果。 3 objects in existence 4 objects in existence after allocation 3 objects in existence after delection 【3.21】写出下面程序的运行结果。 Counting at 0 Counting at 1 Counting at 2 Counting at 3 Counting at 4 Counting at 5 Counting at 6 Counting at 7 Counting at 8 Counting at 9 【3.22】写出下面程序的运行结果。 Default constructor called. Default constructor called. Default constructor called. Constructor: a=1, b=2 Constructor: a=3, b=4 Constructor: a=5, b=6 【3.23】写出下面程序的运行结果。 Con. Copy con. default. 【3.24】写出下面程序的运行结果。 A=5 B=14 A=9 7 B=14 【3.25】写出下面程序的运行结果。 5,7 22,25 【3.26】写出下面程序的运行结果。 Constructing Constructing A=5 B=15 Destructing A=10 B=15 Destructing Destructing Destructing 【3.27】指出下列程序中的错误,并说明为什么。 class Student { char name[10]; int age; float aver; void printStu(); }; void main() { Student p1,p2,p3; = 30; //Error: age为私有成员,不能在类外直接访问} 【3.28】指出下列程序中的错误,并说明为什么。 class Student 8 { int age; int sno; public: /*在成员函数定义前加public,不然默认为private,则在主函数中不能调用私有的成员函数*/ void printStu(); void setSno(int d); void setAge(int a); //添加成员函数的声明 }; void printStu() //类外定义成员函数需加类名::,改为:void Student::printStu() { cout<<"nStudent No. is "< cout<<"age is "< } void setSno(int s) //类外定义成员函数需加类名::,改为:void Student:: setSno(int s) { sno=s; } void setAge(int a) //类外定义成员函数需加类名::,改为:void Student:: setAge(int a) { age = a; } void main() { Student lin; (20021); (20); tu(); 9 } 【3.29】指出下列程序中的错误,并说明为什么。 class Point { public: }; void main() { } 构造函数Point是私有的,语句“Point copint;”执行时出现错误。错误的原因是:类Point的构造函数是私有函数,创建对象cpoint时不能调用它。 【3.30】下面是一个计算器类的定义,请完成该类成员函数的实现。 #include using namespace std; class Counter { public: Counter(int number); void increment(); //给原值加1 10 Point cpoint; cpoint.x = 2; int x,y; private: Point()//构造函数不能说明为private的 { } x = 1; y = 2; void decrement(); //给原值减1 int getValue(); //取得计数器值 int print(); //显示计数 private: int value; }; counter::counter(int number) { value = number; } void counter::increment() { value++; } void counter::decrement() { value--; } int counter::getvalue() { return value; } int counter::print() { cout<<"nvalue is: "< return 0; } void main() { counter op(10); 11 (); ent(); (); ent(); (); } 【3.31】根据注释语句的提示,实现类Date的成员函数。#include using namespace std; class Date { public: void printDate();//显示日期 void setDay(int d);//设置日的值 void setMonth(int m);//设置月的值 void setYear(int y);//设置年的值 private: int day,month,year; }; void Date::printDate() { cout< } void Date::setDay(int d) { day = d; } void Date::setMonth(int m) { month = m; 12 } void Date::setYear(int y) { year = y ; } int main() { Date testDay; (5); th(10); r(2003); ate(); return 0; } 【3.32】建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。 #include using namespace std; const double PI=3.1415926; class Cylinder { double radius,height,volume; public: Cylinder(double r,double h) { } 13 radius=r; height=h; volume=PI*radius*radius*height; void vol() { } }; int main() { Cylinder c(2,5); (); return 0; } 【3.33】构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。显示每个对象的qu*price值。 【3.34】修改上题,通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值。 #include using namespace std; class Book { private: int qu,price; public: Book(int i); void print(); void printqandp(); }; Book::Book(int i) { qu = i; 14 cout<<"the volume is"< price = qu * 10; } void Book::print() { cout<<"the Book's qu is: "< cout<<"the Book's price is: "< } void Book::printqandp() { cout<<"the Book's qu*price is: "< } void main() { Book a[5] = {1,2,3,4,5}; int i; for(i = 0; i < 5; i++) { a[i].print(); } Book *b = &a[4]; //逆序显示数组元素 for(i = 0; i < 5; i++) { b->printqandp(); b--; } Book *c = a; //顺序显示数组元素 for(i = 0; i < 5; i++) { c->printqandp(); c++; 15 } } //或者 class Book { private: int qu,price; public: Book(int q,int p); void print(); void printqandp(); }; Book::Book(int q,int p) { qu = q; price = p; } void Book::print() { cout<<"the Book's qu is: "< cout<<"the Book's price is: "< } void Book::printqandp() { cout<<"the Book's qu*price is: "< } void main() { Book a[5] = {Book(1,10),Book(2,20),Book(3,30),Book(4,40),Book(5,50)}; int i; 16 for(i = 0; i < 5; i++) { } Book *b = &a[4]; //逆序显示数组元素 for(i = 0; i < 5; i++) { } Book *c = a; //顺序显示数组元素 for(i = 0; i < 5; i++) { } } 【3.35】构建一个类Stock,含字符数组stockcode[]及整型数据成员quan、双精度型数据成员price。构造函数含3个参数:字符数组na[]及q、p。当定义Stock的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2个和第3个参数分别赋给quan和price。未设置第2个和第3个参数时,quan的值为1000,price的值为8.98。成员函数print()没有形参,需使用this指针,显示对象数据成员的内容。假设类Stock第1个对象的三个参数为:“600001”、3000和5.67,第2个对象的第1个数据成员的值是“600001”,第2和第3个数据成员的值取默认值。要求编写程序分别显示这两个对象数据成员的值。 #include #include using namespace std; class Stock { public: Stock(char na[], int q = 1000,double p =8.98); 17 c->printqandp(); c++; b->printqandp(); b--; a[i].print(); print(); private: }; Stock::Stock(char na[], int q,double p) { strcpy(stockcode, na); quan = q; price = p; } Stock::print() { char stockcode[16]; int quan; float price; cout<<"stocknode: "< cout<<" "<<"price: "< } void main() { Stock a("600001",3000,5.67); Stock b("600001"); (); (); } 【3.36】编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。 #include #include using namespace std; class Student 18 { string name; string sno; double score; static int num; static double sum; public: Student(string n,string no,double s); void print(); static double getAverage(); static double gettotal(); static int getnum(); }; int Student::num=0; double Student::sum=0; Student::Student(string n,string no,double s) { name=n; sno=no; score=s; num++; sum+=s; } void Student::print() { cout<<"学生的学号为: "< int Student::getnum() "< 19 { return num; } double Student::getAverage() { if (num==0) else } double Student::gettotal() { return sum; } int main() { cout<<"当前学生人数为:"< Student s1("12012","张明",80); (); cout<<"当前学生人数为:"<<()<<"学生的总成绩为:"< Student s2("09615","李涛",50); (); cout<<"当前学生人数为:"<<()<<"学生的总成绩为:"< Student s3("12016","王晓",90); 20 return sum/num; return 0; (); cout<<"当前学生人数为:"<<()<<"学生的总成绩为:"< return 0; } 【4.8】A 【4.9】C 【4.10】C 【4.11】B 【4.12】程序运行结果: Constructor B2 Constructor B1 Constructor A 3 2 1 【4.13】程序运行结果: 主食=bread 副食=steak 【4.14】程序运行结果: 0,0,0 第四章 派生类与继承 21 0,1,0 3,6,9 【4.15】程序运行结果: Constructor B2.2 Constructor B1.1 Constructor B3.3 Constructor A.4 1 2 4,3 【4.16】程序运行结果: 4 【4.17】程序运行结果: (1,2) 5,6 (6,9) 【4.18】程序运行结果: class base1 class base2 class level2 class base2 class level1 class toplevel 【4.19】下面的程序可以输出ASCII字符与所对应的数字的对照表。修改下列程序,使其可以输出字母a到z(或任意两个字符间)与所对应的数字的对照表。 #include using namespace std; #include class table { 22 public: table(int p,int q) { i=p; j=q; } void ascii(void); protected: int i,j; }; void table::ascii(void) { int k=1; int m; for(m=i;m<=j;m++) { cout< if(k%12==0) cout<<"n"; k++; } cout< } class der_table:public table { public: der_table(int p,int q,char *m):table(p,q) { c=m; } 23 void print(void); protected: char *c; }; void der_table::print(void) { cout< table::ascii(); } void main() { der_table ob('a','z',"ASCII value--char"); (); (); } 【4.20】 #include using namespace std; class area_cl { protected: double height; double width; public: area_cl(double r,double s) { height=r; width=s; } 24 virtual double area()=0; }; class rectangle:public area_cl { public: rectangle(int h,int w):area_cl(h,w) {} double area() { return height*width; } }; class isosceles:public area_cl { public: isosceles(int h,int w):area_cl(h,w) {} double area() { return 0.5*height*width; } }; int main() { rectangle r(10,5); isosceles i(4,6); area_cl *p; 25 p=&r; cout<<"矩形的面积为:"< p=&i; cout<<"三角形的面积为:"< return 0; } 【4.21】已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Childname用于表示小孩的名字,同事设计主程序显示一个小孩的出生时间和名字。 #include #include using namespace std; class Time { public: Time(int h,int m,int s) { } void display() { } protected: int hours,minutes,seconds; 26 cout<<"出生时间:"< hours=h; minutes=m; seconds=s; }; class Date { public: Date(int m,int d,int y) { month=m; day=d; year=y; } virtual void display() { cout<<"出生年月"< } protected: int month,day,year; }; class Birthtime:public Time,public Date { private: string Childname; public: Birthtime(string name,int y,int mon,int d,int h,int m,int s):Date(mon,d,y),Time(h,m,s) { Childname=name; } void display() { cout<<"小孩的姓名为:"< 27 } }; Date::display(); Time::display(); int main() { Birthtime mary("Mary",2013,1,1,13,25,40); y(); Birthtime jack("Jackson",2000,11,11,23,55,10); y(); return 0; } 【4.22】编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、系别和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名、输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。 #include #include using namespace std; class Person { string sno,name; public: void Input() { cout<<"请输入编号:"; cin>>sno; cout<<"请输入姓名:"; 28 cin>>name; } void print() { cout<<"编号:"< cout<<"姓名:"< } }; class Student:public Person { string department; double score; public: void Input() { Person::Input(); cout<<"请输入学生的班号:"; cin>>department; cout<<"请输入学生的成绩:"; cin>>score; } void print() { Person::print(); cout<<"班号:"< cout<<"成绩:"< } }; class Teacher:public Person { 29 string department; string prof; public: void Input() { Person::Input(); cout<<"请输入教师的部门:"; cin>>department; cout<<"请输入教师的职称:"; cin>>prof; } void print() { Person::print(); cout<<"教师的部门:"< cout<<"教师的职称:"< } }; int main() { Student s; Teacher t; cout<<"请输入学生的基本信息:n"; (); cout<<"请输入教师的基本信息:n"; (); cout<<"显示学生的基本信息:n"; (); cout<<"显示教师的基本信息:n"; (); 30 return 0; } 第五章 多态性 【5.7】D 【5.8】A 【5.9】A 【5.10】D 【5.11】C 【5.12】C 【5.13】该定义方法不正确,虚函数在派生类中重新定义时,要求函数原型(包括函数类型、函数名、参数个数与参数类型的顺序)都必须与基类中的原型完全相同。本程序段中,虚函数在派生类中重新定义时,参数个数与基类中的原型不同。 【5.14】写出程序运行结果。 7 6 【5.15】写出程序运行结果。 This is C++ book. 第1个字符:T 第16个字符:k 第26个字符:数组下标越界! 【5.16】写出程序运行结果。 m=1.5千米 【5.17】编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加或相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。 #include using namespace std; class Array 31 { int M,N; double *p; public: Array(int m,int n,int *p); Array(int m,int n); void print(); void Input(); Array operator+(Array b); Array operator-(Array b); }; Array::Array(int m,int n,int *a) { M=m; N=n; p=new double[m*n]; for(int i=0;i { p[i]=a[i]; } } Array::Array(int m,int n) { M=m; N=n; p=new double[m*n]; for(int i=0;i { p[i]=0; 32 } } void Array::print() { for(int i=1;i<=M;i++) { for(int j=1;j<=N;j++) { cout< } cout< } } void Array::Input() { for(int i=0;i { cin>>p[i]; } } Array Array::operator+(Array b) { if(M !=b.M || N != b.N) { cout<<"两个数组的维数不同,不能进行加运算"< exit(0); } else { 33 Array s(M,N); for(int i=0;i { s.p[i]=p[i]+b.p[i]; } return s; } } Array Array::operator-(Array b) { if(M !=b.M || N != b.N) { cout<<"两个数组的维数不同,不能进行加运算"< exit(0); } else { Array s(M,N); for(int i=0;i { s.p[i]=p[i]-b.p[i]; } return s; } } int main() { int a[6]={1,2,3,4,5,6}; Array ar1(2,3,a); 34 Array ar2(2,3); cout<<"请输入2*3的二维数组ar2的元素:n"; (); cout<<"数组ar1为:"< (); cout<<"数组ar2为:"< (); Array ar3(2,3),ar4(2,3); ar3=ar1+ar2; ar4=ar1-ar2; cout<<"ar1+ar2="< (); cout<<"ar1-ar2="< (); return 0; } 【5.18】修改习题5.17,用友元函数重载运算符"+"和"-"将两个二维数组相加或相减。#include class Array { int M,N; double *p; public: Array(int m,int n,int *p); 35 Array(int m,int n); void print(); void Input(); friend Array operator+(Array a, Array b); friend Array operator-(Array a,Array b); }; Array::Array(int m,int n,int *a) { M=m; N=n; p=new double[m*n]; for(int i=0;i { p[i]=a[i]; } } Array::Array(int m,int n) { M=m; N=n; p=new double[m*n]; for(int i=0;i { p[i]=0; } } void Array::print() { 36 for(int i=1;i<=M;i++) { for(int j=1;j<=N;j++) { cout< } cout< } } void Array::Input() { for(int i=0;i { cin>>p[i]; } } Array operator+(Array a,Array b) { if(a.M !=b.M || a.N != b.N) { cout<<"两个数组的维数不同,不能进行加运算"< return Array(1,1); } else { Array s(a.M,a.N); for(int i=0;i { s.p[i]=a.p[i]+b.p[i]; } 37 return s; } } Array operator-(Array a,Array b) { if(a.M !=b.M || a.N != b.N) { cout<<"两个数组的维数不同,不能进行加运算"< return Array(1,1); } else { Array s(a.M,a.N); for(int i=0;i { s.p[i]=a.p[i]-b.p[i]; } return s; } } int main() { int a[6]={1,2,3,4,5,6}; Array ar1(2,3,a); Array ar2(2,3); cout<<"请输入2*3的二维数组ar2的元素:n"; (); cout<<"数组ar1为:"< 38 } (); cout<<"数组ar2为:"< (); Array ar3(2,3),ar4(2,3); ar3=ar1+ar2; ar4=ar1-ar2; cout<<"ar1+ar2="< (); cout<<"ar1-ar2="< (); return 0; 【5.19】编写一个程序,要求: (1)声明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5; (2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作; (3)定义成员函数print,调用该函数时,以格式“real+imag i”输出当前对象的实部和虚部,例如:对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:4.2+6.5 i; (4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。 #include class Complex { 39 double real,imag; public: Complex(double r=0,double i=0); void print(); friend Complex operator+(Complex a,Complex b); }; Complex::Complex(double r,double i) { real=r; imag=i; } void Complex::print() { cout<<"("< } Complex operator+(Complex a,Complex b) { Complex c; =+; =+; return c; } int main() { Complex c1(2.5,3.7),c2(4.2,6.5); cout<<"c1="; (); cout<<"c2="; (); Complex c3=c1+c2; 40 } cout<<"c1+c2="; (); return 0; 【5.20】写一个程序,定义抽象类Container,由它派生出3个派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体)。用虚函数分别计算几种图形的表面积和体积。 #include #include using namespace std; const double PI=3.1415926; class Container { protected: double radius; public: Container(double r) { radius=r; } double getr() { return radius; } virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume }; class Sphere: public Container//(球体) { 41 public: Sphere(double r):Container(r) { } double surface_area() { return 4*PI*radius*radius; } double volume() { return PI*pow(radius,3)*4/3; } }; class Cylinder: public Container//(圆柱体) { double height; public: Cylinder(double r,double h):Container(r) { height=h; } double geth() { return height; } double surface_area() { return 2*PI*radius*(height+radius); 42 } double volume() { return PI*radius*radius*height; } }; class Cube: public Container//(正方体) { public: Cube(double r):Container(r) { } double surface_area() { return 6*radius*radius; } double volume() { return pow(radius,3); } }; int main() { Container *ptr; Sphere s(2); Cylinder cy(1,5); Cube cb(5); 43 ptr=&s; cout<<"球体的半径为:"< cout<<"球体的表面积为:"< cout<<"球体的体积为:"< cout<<"******************"< ptr=&cy; cout<<"圆柱体的半径为:"< cout<<"圆柱体的高为:"<<()< cout<<"圆柱体的表面积为:"< cout<<"圆柱体的体积为:"< cout<<"******************"< ptr=&cb; cout<<"正方体的边长为:"< cout<<"正方体的表面积为:"< cout<<"正方体的体积为:"< return 0; } 第六章 模板与异常处理 6.5】D 6.6】A 6.7】B 6.8】程序运行结果: 44 【【【【 10 0.23 X This is a test. 【6.9】程序运行结果: 4!=24 n=-2不能计算n!。 程序执行结束。 【6.10】指出下列程序中的错误,并说明原因。 #include using namespace std; template class Compare { public: Compare(T a, T b) { x=a; y=b; } T min(); private: T x,y; }; template T Compare::min() //应改为:T Compare return (x } int main() { 45 Compare com1(3,7); //应改为:Compare cout<<"其中的最小值是:"<<()< return 0; } 【6.11】已知下列主函数: int main() { cout< cout< cout< return 0; } 声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。#include using namespace std; template T min(T a, T b,T c) { T t; t=(a if(t>c) t=c; return t; } int main() { cout<<"min(10,5,3)="< cout<<"min(10.2,5.6,3.8)="< cout<<"min('a','b','c')="< 46 return 0; } 【6.12】编写一个函数模板,求数组中的最大元素,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。 #include using namespace std; template T Max(T a[],int size=0) { T max=a[0]; for(int i=1;i { if(max { max=a[i]; } } return max; } int main() { int a[]={23,45,1,37,2323,256,6}; double b[]={1.2,4.56,34,6.785,23.13}; int alength=sizeof(a)/sizeof(int); int blength=sizeof(b)/sizeof(double); cout<<"数组a的元素为:"; 47 } int i; for(i=0;i { } cout<<"n数组a的最大元素为:"< cout< cout<<"数组b的元素为:"; for(i=0;i { } cout<<"n数组b的最大元素为:"< cout< return 0; 【6.13】 编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。 #include using namespace std; template void Sort(T a[],int size=0) { T t; for(int i=1;i<=size-1;i++) { for(int j=0;j 48 { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } int main() { int a[]={23,45,1,37,2323,256,6}; double b[]={1.2,4.56,34,6.785,23.13}; int alength=sizeof(a)/sizeof(int); //存储数组a的长度 int blength=sizeof(b)/sizeof(double); //存储数组b的长度 int i; //i为循环变量 cout<<"排序前数组a的元素为:"; for(i=0;i { cout< } Sort(a,alength); cout<<"n排序后数组a的元素为:"; for(i=0;i { 49
版权声明:本文标题:C++面向对象程序设计课后题答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703224220h442960.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论