西安交通大学大学C++程序设计教程总复习_第1页
西安交通大学大学C++程序设计教程总复习_第2页
西安交通大学大学C++程序设计教程总复习_第3页
西安交通大学大学C++程序设计教程总复习_第4页
西安交通大学大学C++程序设计教程总复习_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学C++程序设计教程综合复习

授课内容

考试系统介绍程序运行错误检查例题分析上网费用结算程序。键盘输入上网时间(单位:小时)和每小时的上网费用(单位:元),计算并输出上网费用。若上网时间超过8小时,则超过部分按60%计费(结果按四舍五入法保留1位小数)。评分标准:程序框架完整,代码规范(20%)数据类型的定义和使用方法正确(20%)程序控制结构使用正确(20%)算法正确,清晰合理(20%)运行结果正确,输入和输出格式如下所示(20%)输入上网时间:10输入每小时上网费用:1上网费用:9.2元//计算上网费用#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ doubleh,f,t;

cout<<"输入上网时间:";

cin>>h;

cout<<"输入每小时上网费用:";

cin>>f;

if(h>8) t=8*f+(h-8)*f*0.6; else t=h*f;

cout<<fixed<<setprecision(1);

cout<<"上网费用:"<<t<<"元"<<endl; return0;}//计算上网费用#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ doubleh,f,t;

cout<<"输入上网时间:";

cin>>h;

cout<<"输入每小时上网费用:";

cin>>f;

if(h>8) t=8*f+(h-8)*f*0.6; else t=h*f;

cout<<fixed;

cout<<"上网费用:"<<setprecision(1)<<t<<"元"<<endl; return0;}定义表示空间点的类Point,数据成员用变量X、Y和Z,分别表示点的三维坐标。再定义表示球体的类Sphere,它以公有方式继承Point,以该点为球心并增加数据成员R表示球体半径。基类中有计算该点到坐标原点距离的函数,派生类中有计算球体表面积和体积的函数。另外,基类和派生类都有构造函数,并且可以通过构造函数直接设定数据成员。编写测试代码,在主函数中输入球心坐标及半径,然后输出球心到原点距离、球体表面积和体积。评分标准:程序框架完整,代码规范(20%)基类与派生类的结构声明正确,数据成员声明正确(20%)构造函数及其他成员函数的定义方法正确(20%)主函数中的类对象的声明、使用方法正确(20%)运行结果正确,输入和输出格式如下所示(20%)请输入球心坐标:111 请输入球体半径:1 球心坐标:1,1,1 球心到原点距离:1.73205 球体表面积:12.5664 球体体积:4.18879 输入部分:请输入球心坐标:111 请输入球体半径:1 输出部分:

球心到原点距离:1.73205 球体表面积:12.5664 球体体积:4.18879 //类与继承#include<iostream>#include<iomanip>#include<cmath>usingnamespacestd;classPoint{private:

int

x,y,z;public:

Point(int

a,int

b,intc) { x=a; y=b; z=c; } doubleDis() { returnsqrt(x*x+y*y+z*z); }};classSphere:publicPoint{private: doubleR;public:

Sphere(int

a,int

b,int

c,double

r):Point(a,b,c) { R=r; } doubleArea() { return4*3.14159*R*R; } doubleVolume() { return4.0/3.0*3.14159*R*R*R; }};intmain(){

int

x,y,z,r;

cout<<"请输入球心坐标:";

cin>>x>>y>>z;

cout<<"请输入球体半径:";

cin>>r; Spheres(x,y,z,r);

cout<<"球心到原点距离:"<<s.Dis()<<endl;

cout<<"球体表面积:"<<s.Area()<<endl;

cout<<"球体体积:"<<s.Volume()<<endl;

cout<<endl; return0;}定义一个基类shape,包含计算面积的虚函数。再由此派生出长方形类(rectangle)和圆类(circle)。其中长方形类中添加数据成员:长和宽,圆类中添加数据成员:圆的半径;两个派生类中均包含带参数的构造函数并为数据成员初始化,均定义虚函数分别计算各自的面积。编写主函数,通过定义指向基类指针,分别指向长方形和圆类的对象,计算并输出相应图形的面积。输入输出格式如下:

输入长方形的长和宽:3.04.0输入圆的半径:2.0长方形的面积为:12圆的面积为:12.5664//虚函数的应用#include<iostream>usingnamespacestd;classshape{public: virtualdoublearea()=0;};classrectangle:publicshape{private: doublelen,width;public:

rectangle(double

l,doublew) {

len=l; width=w; } virtualdoublearea() { returnlen*width; }};classcircle:publicshape{private: doubleradius;public:

circle(doubler) { radius=r; } virtualdoublearea() { return3.14159*radius*radius; }};intmain(){ shape*p; doublel,w,r;

cout<<"输入长方形的长和宽:";

cin>>l>>w;

cout<<"输入圆的半径:";

cin>>r;

cout<<endl; rectanglerec(l,w); circlecir(r); p=&rec;

cout<<"长方形的面积为:"<<p->area()<<endl; p=○

cout<<"圆的面积为:"<<p->area()<<endl; return0;}找出1000-2000之间所有整数中满足如下条件的数:该数的高端两位数字的和与低端两位数字的和值相等,如1001,1120。程序能输出所有满足条件的数以及它们的总个数。//循环的应用#include<iostream>usingnamespacestd;intmain(){ int

n,a,b,c,d,s=0;

cout<<"满足条件的数是:"<<endl;

for(n=1000;n<=2000;n++) { a=n/1000; b=n/100%10; c=n/10%10; d=n%10;

if(a+b==c+d) {cout<<n<<"\t"; s++; } }

cout<<endl;

cout<<"总个数为:"<<s<<endl; return0;}

将下列学生成绩数据写入文件”score.txt”,张三908085李一897896赵四789087吴五889990然后读出文件中的数据,并计算出总分,并按下列格式输出到屏幕。姓名高数物理英语总分张三908085255李一897896263赵四789087255吴五889990277

//文件操作#include<iostream>#include<fstream>usingnamespacestd;intmain(){

ofstream

out("score.txt");

if(!out){

cout<<"Filenotfound!";return1;}out<<"张三908085"<<endl;out<<"李一897896"<<endl;out<<"赵四789087"<<endl;out<<"吴五889990"<<endl;

out.close();ifstream

in("score.txt");cout<<"姓名"<<"\t"<<"高数"<<"\t"<<"物理"<<"\t"<<"英语"<<"\t"<<"总分"<<endl;charname[7];floatc1,c2,c3,c;if(!in){

cout<<"Filenotopened!";return2;}in>>name>>c1>>c2>>c3;while(in){c=c1+c2+c3;

if(in)cout<<name<<"\t"<<c1<<"\t"<<c2<<"\t"<<c3<<"\t"<<c<<endl;

in>>name>>c1>>c2>>c3;}

in.close();return0;}写一函数,原形为:voidreverse(int

x[],intstart,intend);功能是将x数组中下标从start到end之间的元素逆置。并在主函数中定义数组a,初始值为:23,43,12,3,5,7,19,41,56,78,90。输出下标从0到4和5到最后一个元素逆置后的结果。结果为:53

12

43

23

90

78

56

41

19

7//数组、指针与函数#include<iostream>usingnamespacestd;voidreverse(int

x[],int

start,intend){

intt;

int*s,*e;

for(s=&x[start],e=&x[end];s<e;s++,e--) {t=*s; *s=*e; *e=t; }}intmain(){voidreverse(int

x[],int

start,intend);

inta[]={23,43,12,3,5,7,19,41,56,78,90};reverse(a,0,4);reverse(a,5,10);

for(inti=0;i<11;i++)

cout<<a[i]<<"";

cout<<endl;return0;}题目一:文件操作,题目:在当前工程所在目录中创建文本文件123.txt,内容如下:"Thisisasample.",然后在屏幕上显示文件内容,同时能够计算出文件的大小(即字符数)。编程要求:(1)程序框架完整,代码规范(20%)(2)文件的打开与关闭方法正确,能处理新建文件失败的情形(20%)(3)数据类型、程序控制结构使用正确(20%)(4)算法正确,清晰合理(20%)(5)运行结果正确,文件内容正确显示到屏幕上,并显示该文件有多少字节(20%)运行过程如下:文件内容如下:Thisisasample.文件长度为:17#include<iostream>#include<fstream>usingnamespacestd;intmain(){

ofstreamout("123.txt");

if(!out) {

cout<<"Filenotopenederror!"; return1; } out<<“Thisisasample.”;//创建123.txt文件

out.close();

ifstreamin("123.txt");

if(!in) {

cout<<"Filenotfound!"; return2; } charch;

intcount=0;

cout<<"文件内容如下:"<<endl;

in.get(ch);

while(in) {

cout.put(ch); count++;

in.get(ch);

}

cout<<endl;

cout<<"文件长度为:"<<count<<endl; return0;}题目二:

建立一个代表平面点的基类Point,它的数据成员为点的二维坐标,分别用成员变量X、Y表示。建立代表椭圆的派生类Ellipse,继承Point,并增加了数据成员A和B分别表示椭圆长半轴和短半轴。基类中有计算该点到坐标原点距离的方法,派生类中有计算椭圆面积的方法。另外,基类和派生类都有构造函数,并且可以通过构造函数直接设定数据成员。(椭圆面积为3.1415926*A*B)请编制应用程序,在主函数中让用户输入椭圆中心坐标及长半轴和短半轴,然后输出椭圆中心到原点距离、椭圆面积。

编程要求及评分标准:程序框架完整,代码规范(20%)基类与派生类的结构声明正确,数据成员声明正确(20%)基类的构造函数及其他成员函数定义正确;(20%)派生类的构造函数及其他成员函数定义正确;(20%)主函数中的类对象的声明、使用方法正确并且运行结果正确,输入和输出格式如下所示(20%)请输入椭圆中心坐标:12 请输入椭圆半长轴、半短轴:53 椭圆中心坐标:1,2 椭圆心到原点距离:2.23607 椭圆面积:47.1239

编写函数,根据以下函数关系,对输入的每个x值,计算并返回相应的函数值,函数原型为:doublef(doublex);编写主函数进行测试。输入任意3个大小不等的三位正整数,按如下条件形成一个新的三位数:该数的最高位为3个正整数中最大数的百位数字,最低位为3个正整数中最小数的个位数字,中间数位为3个正整数中剩下数的十位数字。计算s=1!+2!+3!+4!+…+n!+….,直到n!>105时为止,并输出满足条件后的s值和对应的n值。键盘输入n个浮点数(n≤50),求其平均值,并统计出高于平均值(包括平均值)的浮点数的个数。程序中输出以下结果:平均值、高于平均值的各个数以及高于平均值的数的个数。按照如下数列的规律,输出前n项各数据值。数列如下:0,1,3,6,10,15,21,…找出从1001开始的50个素数。所谓素数,指该数只有1和其本身两个约数,再无别的约数。设计一个Point类,包含其坐标x和y两个属性以及对这些属性操作的方法。实现并测试这个类。要求:所有的属性声明为私有的数据成员;设计一个构造函数,在创建对象时可以对所有属性赋值;设计成员函数ShowMe(),能够输出类的所有数据成员;编写测试用主函数,创建2个Point类对象,分别输入他们的坐标,并调用ShowMe()进行输出。设计一个Circle类,其属性有圆心坐标x和y,半径r。实现并测试这个类。编程要求:(1)所有的属性声明为私有的数据成员;(2)设计成员函数voidSet(int,int,double),可以通过参数对所有属性赋值;(3)设计成员函数doubleArea(),能够计算圆的面积;(4)编写测试用主函数,创建1个Circle类对象,分别输入其属性值,计算并输出其面积。有一个已经排好序的数组,现将从键盘输入的一个数插入到该数组中,并继续保持有序。最后输出数组各元素值。例如:原数组序列为{1,3,7,9,12,15,21,27,30,77,101},程序插入49后的数组为{1,3,7,9,12,15,21,27,30,49,77,101}编写一个程序,将两个指定的文本文件合并为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论