GIS程序设计实验报告c++.docx
- 文档编号:11853041
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:32
- 大小:423.47KB
GIS程序设计实验报告c++.docx
《GIS程序设计实验报告c++.docx》由会员分享,可在线阅读,更多相关《GIS程序设计实验报告c++.docx(32页珍藏版)》请在冰豆网上搜索。
GIS程序设计实验报告c++
合肥工业大学
资源与环境工程学院
《GIS程序设计》实验报告
姓名
学号
专业地理信息系统
班级
任课教师
实验1:
在小范围内用C++增强C的功能
一、实验目的和要求
目的:
快速掌握C++语言编程的方法,在小范围内增强C++的功能,主要内容有:
(1)输入流、输出流的使用;
(2)函数原型;(3)new和delete运算符分配内存。
二、实验代码(附注释)或解答
(1)编写一个用输入和输出流运算符进行的输入和输出的程序。
从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。
#include
#include
voidmain()
{doublea,b,c,d,e,f;
cout<<"输入两个数"< cin>>a>>b; c=a+b; d=a-b; e=a*b; f=a/b; cout<<"a+b="< cout<<"a-b="< cout<<"a*b="< cout<<"a/b="< } (2)用new和delete运算符动态分配内存空间的方法编写程序。 从键盘输入3´3整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。 //使用newdelete动态内存分配 #include #include voidmain() {intm,n,sum=0,i,j,min,max; int**a;//创建二维指针 cout<<"输入数组行数列数"; cin>>m>>n; a=newint*[m];//创建指针数组 for(i=0;i {a[i]=newint[m];//为每一行分配空间 } cout<<"输入数组元素"; for(i=0;i for(j=0;j {cin>>a[i][j]; } min=max=a[0][0]; for(i=0;i for(j=0;j { if(min>a[i][j]) min=a[i][j];//求最小值 if(max max=a[i][j];//求最大值 sum=sum+a[i][j];//求和 } for(i=0;i { delete[]a[i]; } delete[]a;//释放动态数组 cout<<"sum="< cout<<"min="< } (3)用内联函数编写程序。 输入圆柱的半径和高,计算圆柱的底面周长,表面积和体积。 底面周长,表面积和体积的实现用内联函数实现 #include #definePI3.1415926 #include inlinedoublelenth(doublea,doubleb)//内联函数: 求圆柱的周长 { return4*PI*a; } inlinedoubleseq(doublea,doubleb)//内联函数: 求圆柱的面积 { return2*PI*a*a+2*PI*a*b; } inlinedoublevv(doublea,doubleb)//内联函数: 求圆柱的体积 { returnPI*a*a*b; } /************************/ voidmain() { doubler,h; doublel,s,v; cout<<"输入圆柱的半径,高: "; cin>>r>>h; l=lenth(r,h);//调用内联函数 s=seq(r,h); v=vv(r,h); cout<<"周长l="< cout<<"面积s="< } (4)仿照教材中的例题,用引用的方法给包含十个元素的一维数组赋值,其值分别为9,8,7,6,5,4,3,2,1。 #include voidmain() {inta[10],i; for(i=0;i<10;i++) { int&t=a[i]; t=10-i; } cout<<"数组为: "< for(i=0;i<10;i++) { cout< } } 三、思考题解答 (1)内联函数与无参数的宏定义和普通函数的区别是什么? 使用内联函数应注意什么问题? 区别: 内联函数是在程序执行到该处时自动将代码植入到主程序处进行运行;宏定义是在程序开始执行前替换到程序中的宏定义的所有代码;普通函数是程序执行到该处时,调用函数,然后转到其他程序运行; (2)分配二维数组的内存空间如3行4列的数组。 int(*p)[4]; p=newint[3][4]; 程序不能使用c++不存在的字符集如 正确解答: int**p,i;*p=newint[3]; for(i=0;i<3;i+=) {p[i]=newint[4]; } (3)实参与形参匹配的问题: inta[3][4]; circle(a[0]);//或circle(&a[0][0]) floatcircle(int*p) {}*p指向的是a[0][0],不是他是地址,也不是指针 (4)变量定义的错误 for(intj=0;j<10;j++) {int&a=x;---} x在其他无定义 四、实验总结 通过这次试验,我们练习了基本的c++操作,对这门课有了更深的认识,对第一个试验比较容易,后面几个就是新的内容,所以就参考了教科书并在网上查询了一些,特别是二维数组的动态分配内存空间,可以用一维和二维的方法来完成本次试验的操作。 实验2: 类的定义与应用 一、实验目的和要求 1.定义一个时间类Time,它能提供由时分秒组成的时间。 要求能够修改时间和打印出时间。 2.定义一个计算器类,能够实现加减乘除四则运算,对有关成员函数重载,以实现不同类型数据的运算。 并用构造函数和析构函数将数据成员初始化为0。 3.编写一个画图的程序,定义圆,直线和矩形等基本绘图元素的类,能够实现基本的绘图功能 二、实验代码(附注释)或解答 1.定义一个时间类Time,它能提供由时分秒组成的时间。 要求能够修改时间和打印出时间。 #include classtime { private: inth,m,s; public: voidget() { cout<<"putinhourminutesecond"< cin>>h>>m>>s; } voidput() { cout< "< "< } }; voidmain() { timea; a.get(); a.put(); } 2.定义一个计算器类,能够实现加减乘除四则运算,对有关成员函数重载,以实现不同类型数据的运算。 并用构造函数和析构函数将数据成员初始化为0。 #include classacc { private: inta,b; public: acc() { a=0;b=0; } doubleadd(doublea,doubleb) { returna+b; }; doublesub(doublea,doubleb) { returna-b; }; doublemul(doublea,doubleb) { returna*b; }; doublediv(doublea,doubleb) { returna/b; }; /************/ intadd(inta,intb) { returna+b; }; intsub(inta,intb) { returna-b; }; intmul(inta,intb) { returna*b; }; intdiv(inta,intb) { returna/b; }; ~acc() { cout<<"调用析构函数"< } }; voidmain() {inta,b; doublex,y; accc; cout<<"putintwointeger: "; cin>>a>>b;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 程序设计 实验 报告 c+