c++课后习题答案
- 格式:doc
- 大小:101.50 KB
- 文档页数:8
1、C++的特点:C++语言具有以下特点:(1) C++是C语言的超集。
它既保持了C语言的简洁、高效和接近汇编语言等特点,又克服了C语言的缺点,其编译系统能检查更多的语法错误,因此,C++比C语言更安全。
(2) C++保持了与C语言的兼容。
绝大多数C语言程序可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用于C++程序中。
(3) 支持面向对象程序设计的特征。
C++既支持面向过程的程序设计,又支持面向对象的程序设计。
(4) C++程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。
C++对C那些发展?C主要有如下不足之处: 1.编译器查错能力弱 2.没有支持代码重用的机制,编程效率低下 3.结构上的不足,导致难以开发大型、复杂的程序 4.因语法过于灵活,导致安全性下降 C++克服了C的不足,C++支持面向对象的程序设计。
C++中发展了类的概念,使面向对象的设计能以实现,适于开发大型、复杂的程序2.一个c++程序由哪几部分构成?每一部分的作用是什么?任何的可被执行的程序都必须要有一个被执行的入口点,当然C++也不会例外,有main函数作为整个程序的入口点,而且必不可少。
再有就是在main函数中所要用到的类,这个部分的内容由#include将类的内容在链接的过程中参与到整个程序的过程中,但是这个部分的内容并不参与编译。
为了管理的清晰和系统化,类方法的实现部分将会存在另外一个或者几个独立的文件中,当然如果不嫌弃有一个长长的文件的话,也可以将类的实现方法跟类放在同一个文件当中。
总体上就分为这三个部分。
4、请说明编辑、编译、连接的作用编辑是应用程序开发的第一步,工作内容就是输入、修改程序。
通过程序编辑而得到的程序称为源程序,约定的扩展名是cpp。
编译是应用程序开发的第二步,工作内容就是分析程序文件中的源程序,生成目标程序,扩展名是obj。
连接是应用程序开发的第三步,工作内容就是将若干目标程序加以归并、整理,为所有的函数、变量分配具体地址,生成可执行程序,扩展名是exe。
编译后得到的目标文件为什么不能直接运行?构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?构造函数用来处理对象的初始化,它的功能是有用户定义的,用户根据初始化的要求设计函数体和函数参数;当一个类含有一些数据成员,你需要在实例化类的时候就初始化这些成员,就需要自己定义构造函数;析构函数作用是用来完成对象被删除前的一些清理工作,就是专门的扫尾工作;当你的类数据成员中使用了动态分配的内存,就需要定义自己的析构函数来释放这部分内存,防止内存泄露编辑的过程就是产生源代码的过程,这个部分的文件能很容易被人们理解和阅读,但是却不会被机器所读懂。
编译的过程就是将被编辑的源文件生成机器所能读懂的语言的过程。
链接就是在各个被编译的文件之间形成一个可以互通消息的同道。
被编译过的源文件在没有链接之前是彼此孤立的,即不能够互相传达信息,所以被编译过后得到的目标文件仍然不能直接运行。
.输入一个字符串,把其中的字符按逆序输出。
如输入LIGHT,输出THGIL。
要求用string方法。
#include <iostream>#include <string>using namespace std;int main(){ string str;int i,n;char temp;cout<<"please input a string:";cin>>str;n=str.size();for(i=0;i<n/2;i++){temp=str[i];str[i]=str[n-i-1];str[n-i-1]=temp;}cout<<str<<endl;return 0;}.有5个字符串,要求将它们按由小到大的顺序排列,用string方法。
#include <iostream>#include <string>using namespace std;int main(){ int i;stringstr[5]={"BASIC","C","FORTRAN","C+ +","PASCAL"};void sort(string []);sort(str);cout<<"the sorted strings :"<<endl;for(i=0;i<5;i++)cout<<str[i]<<" ";cout<<endl;return 0;}void sort(string s[]){int i,j;string t;for (j=0;j<5;j++)for(i=0;i<5-j;i++)if (s[i]>s[i+1]){t=s[i];s[i]=s[i+1];s[i+1]=t;} }二章1.#include <iostream>using namespace std;class Time{public: //成员改为公用的int hour;int minute;int sec;};Time t;void set_time(void) //在main函数之前定义{cin>>t.hour;cin>>t.minute;cin>>t.sec; }void show_time(void)//在main函数之前定义{cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<e ndl;}int main(){set_time();show_time();return 0; }2.#include <iostream>using namespace std;class Time{public:void set_time(void){cin>>hour;cin>>minute;cin>>sec; }void show_time(void){cout<<hour<<":"<<minute<<":"<<sec<<endl; }private: int hour;int minute;int sec; };Time t;int main(){t.set_time();t.show_time();return 0; }3.#include <iostream>using namespace std;class Time{public:void set_time(void);void show_time(void);private:int hour;int minute;int sec;};void Time::set_time(void){cin>>hour;cin>>minute;cin>>sec; }void Time::show_time(void){cout<<hour<<":"<<minute<<":"<<sec<<end l;}Time t;int main(){ t.set_time();t.show_time();return 0;}6.#include <iostream>using namespace std;class Box{public:void get_value();void volume();void display();public:float lengh;float width;float height;float vol;};void Box::get_value(){ cout<<"please input lengh, width,height:"; cin>>lengh;cin>>width;cin>>height;void Box::volume(){ vol=lengh*width*height;}void Box::display(){ cout<<vol<<endl;}int main(){Box box1,box2,box3;box1.get_value();box1.volume();cout<<"volmue of bax1 is ";box1.display();box2.get_value();box2.volume();cout<<"volmue of bax2 is ";box2.display();box3.get_value();box3.volume();cout<<"volmue of bax3 is ";box3.display();return 0;}三章2.分析下面的程序,写出其运行时的输出结果。
#include <iostream>using namespace std;class Date{public:Date(int,int,int);Date(int,int);Date(int);Date();void display();private:int month;int day;int year;};Date::Date(int m,int d,int y):month(m),day(d),year(y) { } Date::Date(int m,int d):month(m),day(d){year=2005;} Date::Date(intm):month(m){day=1;year=2005; } Date::Date() {month=1;day=1; year=2005;}void Date::display(){cout<<month<<"/"<<day<<"/"<<year< <endl;}int main(){Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display();d2.display();d3.display();d4.display();return 0;}输出结果:10/13/200512/30/200510/1/20051/1/20053..如果将“第二题”中的程序的第5行改为用默认参数,即Date(int=1,int=1,int=2005);分析程序有无问题。