当前位置:文档之家› C程序设计语言资料

C程序设计语言资料

第3次作业一、填空题(本大题共20分,共5小题,每小题4分)1•假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 2.类型兼容原则指的是:任何在需要________ 对象的地方,都可以用_______________________________________ 的对象去替代。

3.重新抛出异常的表达式为:__________4.以下程序的执行结果是______________________#i nclude <iostream>using n amespace std;class Base{public:Base(){cout<< ” T ;}~Base(){cout<< ” 2” ;}};class Derived : public Base{public:Derived(){cout<< ” 3” ;}~Derived(){cout<< ” 4” ;}};void mai n(){Derived d;5.以下程序的执行结果是______________________#i nclude <iostream>using n amespace std;class A{int x;public:A(int x){this->x=x;}A &operator--(){x--;return *this;}A operator— nt){A a(x-=2);retur n a;}void show(){ cout« x;}};void mai n(){A a(3),b(3);(a--).show();(--b).show();}二、程序阅读题(本大题共40分,共5小题,每小题8分) 1.写出下面程序运行结果。

#i nclude <iostream.h>void rev(i nt a[],i nt n){int t;for(int i=0,j=n-1;i<j;i++,j--)t=a[i],a[i]=a[j],a[j]=t;}int main(){int b[]={1,2,3,4,5,6,7,8,9};rev(b,9);for(int i=0;i<9;i++) cout<vb[i]vv" ";cout«e ndl;return 0;}2.#i nclude <iostream>using n amespace std;int main(){int i,j,m=3;for(i=0;i<m;i+=2)for(j=m-1;j>=0;j--)cout<vi+jvv(char)(j?'H':'$');cout«e ndl;return 0;}3.#in clude <iostream>#in clude <cstri ng>int coun t(char *s,char *t);int main(){char s1[200]="ab1234cdabcdabcABCDAGBCDdabcd";char s2[100]="bc";cout<<"co un t="<<co un t(s1,s2)«e ndl;return 0;}int coun t(char *s,char *t){int i=0,c=0;while(*(s+i)){if(strncmp(s+i,t,strle n( t))==0)c++;i++;}return c;}#in clude <iostream>int avere(i nt x,i nt y,i nt z);double aver(double x,double y,double z);int main(){int ai=1,bi=2,ci=3;double ad=1.5,bd=5.5,cd=7.5;cout<v"ai+bi+ci="v<aver(ai,bi,ci)vve ndl; cout<v"ad+bd+cd="v<aver(ad,bd,cd)vve ndl;return 0;}int aver(i nt x,i nt y,i nt z){retur n x+y+z;}double aver(double x,double y,double z){retur n x+y+z;}5.#i nclude <iostream> int a,b,c,d;int main() {void p(i nt a,i nt b);coutvvavv","vvbvv","v<cvv","vvdvve ndl;p(a,b);coutvvavv","vvbvv","v<cvv","vvdvve ndl;return 0;}void p(i nt a,i nt b){static int c;a++,b++;c-=1,d+=1;if(a<3){p(a,b); coutvvavv","vvbvv","v<cvv","vvdvve ndl;}}三、程序设计题(本大题共40分,共8小题,每小题5分)1.一个正整数与3的和是5的倍数,与3的差是6的倍数,编程序求出符合此条件的最小正整数。

2.编制程序实现功能:将从键盘输入的若干字符依次存入到磁盘文件data.txt 中,直到输入字符#时为止。

3.设计并实现一个抽象类Polygon表示多边形,及其子类Triangle,表示三角形。

要求:(1)Polygon不具有任何的数据成员,只具有如下纯虚函数表示多边形应该具备的外部接口:void show(); 打印多边形每个顶点的位置double getPerimeter(); 得到多边形的边长double getArea(); 得到多边形的面积(2)设计并实现Point类来表示多边形的顶点,其具有x,y两个数据成员和得到它们的值的外部接口getX()和getY()。

(3)子类Triangle除了实现父类的纯虚函数之外,可根据需要设计成员变量、构造函数等。

(4)在main函数中申明Triangle的对象,并打印每个对象的顶点位置、边长和面积。

4.定义两个类Point和Triangle 代表点和三角形。

Point类有两个double成员,分别代表了x,y坐标。

Triangle类中有三个Point成员,分别代表三个顶点。

在main函数中定义一个Triangle 对象,并求得Triangle对象的面积。

要求除了main函数之外,所有的函数都只能定义为成员函数。

提示:Point中可以定义成员函数求两个点之间的距离。

实现时使用sqrt(double)求平方根。

Triangle类中定义成员函数求面积,使用海伦公式s=sqrt(s*(s-a)*(s-b)*(s-c)),s 是周长的一半。

Point有(但不仅限于)构造函数Point(double,double) , Triangle 有构造函数Tria ngle(Poi nt,Poi nt,Poi nt)5.“爬动的蠕虫”问题:一条蠕虫长度为1厘米,在一口深度为n厘米的井底。

已知蠕虫每分钟可以向上爬u厘米,但必须休息1分钟后才能接着往上爬。

在休息的过程中,蠕虫又下滑了d厘米。

这样反复进行上爬和下滑过程,请设计一个函数返回蠕虫爬出井所需的时间,若不能爬出返回-1。

假定:1)初始时蠕虫趴在井底(高度为0)2)上爬过程中,蠕虫头部到达井的顶部就算出井3)计算时间时,不足一分钟按一分钟计算6.已知二进制文件data.txt中10个整型数据,请编制程序求出这些整数的平均值。

要求读取文件数据部分用独立的函数实现。

7.设计枚举类型MONT代表一年的12个月的英文名称。

设计结构体Date代表日期,包括年、月、日,其中的月成员为MONT类型;Date还包括一个show成员函数来输出形如"2015-10-1"的日期格式。

设计类Holiday来代表假期,其中有两个数据成员:n表示假期天数,ptr表示放假的日期。

其中ptr是指向动态生成的Date数组的首地址。

构造函数和析构函数负责开辟和释放内存空间。

Holiday类还有show成员函数来输出假期中每一天的日期。

在main函数中生成一个具有多天的假期,并输出其中每一天的日期。

编写程序实现功能:将指定文件中的小写字母修改为对应的大写字母答案:一、填空题(20分,共5题,每小题4分)1.参考答案:a+(i*N)*sizeof(a[0][0]) a+i*sizeof(a[i])解题方案:二维数组评分标准:每空2分2.参考答案:基类、公有派生类解题方案:评分标准:3.参考答案:throw ;解题方案:评分标准:4.参考答案:解题方案:5.参考答案:12解题方案:评分标准:二、程序阅读题(40分,共5题,每小题8分)1.参考答案:98765432 1解题方案:评分标准:2.参考答案:2H1H0$4H3H2$解题方案:评分标准:3.参考答案:coun t=3解题方案:评分标准:4.ai+bi+ci=6 ad+bd+cd=14.5解题方案:评分标准:5.参考答案:0,0,0,022-3,31,1,-3,30,0,0,3解题方案:评分标准:三、程序设计题(40分,共8题,每小题5分)1.参考答案:#i nclude <iostream>using n amespace std;int main(){int n=1;if((n+3)%5==0&&(n-3)%6==0)break;n++;}"vvnvven dl;coutvv"满足条件的最小整数是:return 0;}解题方案:评分标准:2.参考答案:#i nclude <iostream>#in elude <fstream>using n amespace std; int main(){char c;ofstream p;p.ope n("data.txt"); if(!p)cout<<"Can not Open File!"«endl;return -1;while((c=getchar())!='#')P.put(c);p.close();return 0;}解题方案:评分标准:3.参考答案:#i nclude <iostream>using n amespace std;class Poi nt{private:double x, y;public:Poi nt(double x, double y);Poi nt();double getX();double getY();double getDista nce(Poi nt p); };Poi nt::Poi nt(double x, double y){ this->x = x;this->y = y;}Poi nt::Poi nt(){}double Poi nt::getX(){return x;}double Poi nt::getY(){return y;}double Poin t::getDista nce(Po int p){return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2)); }class Polyg on{public:virtual void show()=0;virtual double getPerimeter()=O;virtual double getArea()=0;};class Trian gle : public Polyg on{ private:Poi nt pl, p2, p3, p4;public:Triangle(Point p1, Point p2, Point p3);void show();double getPerimeter();double getArea();};Triangle::Triangle(Point p1, Point p2, Point p3){this->p1 = p1;this->p2 = p2;this->p3 = p3;}void Trian gle::show(){cout << "(" << p1.getX() << "," << p1.getY() << ")"cout << "(" << p2.getX() << "," << p2.getY() << ")"cout << "(" << p3.getX() << "," << p3.getY() << ")" cout << en dl;}double Tria ngle::getPerimeter(){return p1.getDista nce(p2) + p2.getDista nce(p3) + p3.getDista nce(p1);} double Trian gle::getArea(){double a = pl.getDista nce(p2);double b = p2.getDista nce(p3);double c = p3.getDista nce(pl);double s = (a + b + c) / 2;return sqrt(s*(s - a)*(s - b)*(s - c));}void mai n(){Point p1(1,0), p2(0, 1), p3(-1,0);Triangle t(p1, p2, p3);t.show();cout << t.getPerimeter() << en dl;cout << t.getArea() << en dl;}解题方案:评分标准:4.参考答案:#i nclude <iostream>using n amespace std;class Point{ private:double x, y;public:Poi nt(){};Point(double xVal, double yVal); double getDista nce(Po int p);}; class Trian gle{private:Point p1, p2, p3;public:Trian gle(Po int poin t1, Point poin t2, Point poin t3); double getArea(); };Poi nt::Poi nt(double xVal, double yVal){x = xVal;y = yVal;} double Poi nt::getDista nce(Poi nt p){return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2)); Triangle::Triangle(Point point1, Point point2. Point point3){ pl = poin t1;p2 = poin t2;p3 = poin t3;}double Tria ngle::getArea(){double a = p1.getDista nce(p2);double b = p2.getDista nce(p3);double c = p3.getDista nce(p1);double s = (a + b + c) / 2;return sqrt(s*(s - a)*(s - b)*(s - c)); } void mai n(){ Point p1(0, 0), p2(3, 0), p3(0, 4);Tria ngle t(p1, p2, p3);cout << t.getArea() << en dl;}解题方案:评分标准:5.参考答案:#in clude <iostream> using n amespace std;int theWorm(i nt n ,i nt u,i nt d);int main(){int n ,u,d,time;cout«"? n,u,d:";cin»n>> u>>d;time=theWorm( n,u,d);if(time==-1)cout<<"The worm can't escapes from well."«e ndl; elsecout<<"time="<<time<<e ndl;return 0;}int theWorm(i nt n ,i nt u,i nt d){int time=0, curh=0;if(u<=d&&n >u)return -1;while(1){curh+=u;time++;if(curh>=n)break;curh-=d;time++;}return time;}解题方案:评分标准:6.参考答案:#i nclude <iostream>#in clude <fstream>#i nclude <ctime>using n amespace std;int main(){void readfile(ifstream &myf,i nt *v);int s[10],i;double sum=0;ifstream myFile("data.txt",ios::bi nary);if(!myFile)cout«"Ca n't ope n file."«e ndl;return -1;}readfile(myFile,s);myFile.close();for(i=0;i<10;i++){sum+=s[i];}cout<v"average="vvsum/10vve ndl; return 0;}void readfile(ifstream &myf,i nt *v){myf.read((char*)v,sizeof(i nt)*10);}解题方案:评分标准:7.参考答案:#i nclude <iostream> using n amespace std; enum MONTH{ JANUARY = 1, FEBRUARY ,MATCH,APRIL,MAY,JUNE,JULY,AUGUST, SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER};struct Date{int year;MONTH mon th;int day;void show();};void Date :: show(){cout << year << "-" << month << "-" << day << en dl; }class Holiday{private:Date *ptr;int n;public:Holiday(i nt _n,Date dates]]);~Holiday();void show();};Holiday::Holiday(i nt _n, Date dates[]){n = _n;ptr = new Date[ n];for (i nt i = 0; i < n; i++)ptr[i] = dates[i];}Holiday::~Holiday(){ delete[] ptr;} void Holiday::show(){for (i nt i = 0; i < n; i++)ptr[i].show();} void mai n(){Date dates[3] = { { 2015, APRIL, 30 }, { 2015, MAY, 1 }, { 2015, MAY, 2 } };Holiday laborHoliday(3, dates);laborHoliday.show();}解题方案:评分标准:8.参考答案:#i nclude <iostream>#in elude <fstream>using n amespace std;int main(){fstream fp;char c,fname[50]; //fname用于存放被处理的文件名int pos;cout«"?fname:";cin»fn ame;fp.ope n( fname,ios::i n|ios::out);if(!fp){cout«"打开文件"vvfnamevv"失败!"<<endl; return -1;}while(1){pos=fp.tellg();fp.get(c);if(fp.eof())break;if(c>='a'&&c<='z'){fp.seekp(pos,ios::beg);fp.put(c-32);}}fp.close();return 0;}解题方案:评分标准:。

相关主题