实验2-C++对C的扩充_第1页
实验2-C++对C的扩充_第2页
实验2-C++对C的扩充_第3页
实验2-C++对C的扩充_第4页
实验2-C++对C的扩充_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、电子信息学院实验报告书课 程 名: 面向对象程序设计 题 目:实验2 C+对C的扩充 实验类别: 设计研究型 班 级: BX1004 学 号: 姓 名: 施程程 评语:实验态度:认真( ) 一般( ) 差( )实验结果:正确( ) 部分正确( )错( )实验理论:掌握( ) 熟悉( ) 了解( ) 不懂( )操作技能:强( ) 一般( ) 差( )实验报告:好( ) 一般( ) 差( )成绩: 指导教师: 批阅时间: 年 月 日1、实验目的 (1)了解在面向过程程序设计中功能的扩充与增强,并善于在编写过程中应用这些新的功能。(2)进一步熟悉在所用的系统上编辑、编译、连接和运行C+程序的方法。&

2、#160;(3)进一步熟悉C+程序的结构和编程方法。2、实验内容要求事先编好解决下面问题的程序,然后上机输入并调试运行。(1) 输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,再进行编译,直到没有错误,然后进行连接和运行,分析运行结果。#includeiostream  using namespace std; int main()int a,b;c=add(a,b)  cout“a+b=”cendl;  return 0;int add(int x,int y)  z=

3、x+y; return(z);(2) 编一个程序,用来求2个或3个正整数中的最大数。1、 用不带默认参数的函数实现。2、 用带有默认参数的函数实现。 对比两种方法,分析用带有默认参数的函数的优点和应用场合,总结如何选择默认b参数的值。请分析本题中默认参数的值应该在什么范围。(3) 对3个变量按由小到大顺序排序,要求使用变量的引用。1、 使用指针方法 2、 使用变量的的引用 请总结引用时要注意什么问题。(4) 有5个字符串,要求对他们按由小到大的顺序排列,用string方法, (5) 编译一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型。1、

4、用重载函数实现。 2、 用函数模板实现。比较这两种方法各有什么特点,什么情况下可以用函数模板代替重载函数? 3实验结果 (1)程序:#include <iostream>using namespace std;int main( )int add(int x,int y); int a,b,c; cin >> a >> b; c=add(a,b); cout <<" a+b=" << c <<endl; return 0;int add(int x,int y)int z; z=x+y; re

5、turn(z);运行结果:(2)程序1:用不带默认参数的函数实现 #include <iostream>using namespace std;int main( )int max(int a,int b,int c); int max(int a,int b); int a,b,c; cin >> a >> b >> c; cout << " max(a,b,c)= " << max(a,b,c) << endl; cout << " max(a,b)= "

6、 <<max(a,b) << endl; return 0;int max(int a,int b,int c)if(b>a) a=b; if(c>a) a=c; return a;int max(int a,int b)if(a>b) return a; else return b; 运行结果:程序2:用带有默认参数的函数实现 #include <iostream>using namespace std;int max(int a,int b,int c=0)if (b>a)a=b; if (c>a)a=c; return a

7、;int main(void)int a,b,c; cin >> a >> b >> c; cout << " max(a,b,c)= " << max(a,b,c) << endl; cout << " max(a,b)= " <<max(a,b) << endl; return 0;运行结果: 有时多次调用同一函数时用的是同样的实参直,C+提供的带有默认参数的的使用更加方便,给形参一个默认值,这样形参就不必一定要从实参取值了。在实行过程中要特别

8、注意,指定默认值的参数必须放在形参列表中的最右端。(3) 程序1:使用指针#include <stdio.h> main() void swap(int *,int *,int *); int a,b,c; int *p1,*p2,*p3; p1=&a; p2=&b; p3=&c; printf("Enter 3 integers:"); scanf("%d%d%d",&a,&b,&c); swap(p1,p2,p3); printf("small to big: %d, %d, %d

9、/n",a,b,c); void swap(int *p1,int *p2,int *p3) int temp,*tmp; static int i=3; if(i-) if(*p1>*p2) temp=*p1; *p1=*p2; *p2=temp; if (i=2) tmp=p2;p2=p3;p3=tmp; if (i=1) tmp=p1;p1=p3;p3=tmp; swap(p1,p2,p3); 运行结果:程序2:使用变量的引用#include <iostream>using namespace std;int main( )void sort(int &

10、;,int &,int &); int a,b,c,a1,b1,c1; cout<<" Please enter 3 integers:" cin>>a>>b>>c; a1=a;b1=b;c1=c; sort(a1,b1,c1); cout<<a<<" "<<b<<" "<<c<<" in sorted order is " cout<<a1<<"

11、 "<<b1<<" "<<c1<<endl; return 0;void sort(int &i,int &j,int &k) void change(int &,int &); if (i>j) change(i, j); if (i>k) change(i, k); if (j>k) change(j, k);void change(int &x,int &y) int temp; temp=x; x=y; y=temp;运行结果:变量的“

12、引用”就是变量的别名,引用的作用是为一个变量起另一个名字,以便在需要时可以方便、间接地应用该变量。在引用时要注意:由于引用不是独立的变量,编译系统不给它单独分配存储单元,因此在建立引用时只有声明,没有定义,只是声明它和原有的某一变量的关系。(4) 程序:#include <iostream>#include <string>using namespace std;int main( ) int i; string str5=" shang","hai"," string"," C+",&qu

13、ot;include" void sort(string ); sort(str); cout<<" the sorted strings : "<<endl; for(i=0;i<5;i+) cout<<stri<<" " 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 (si>si+1) t=si;si

14、=si+1;si+1=t; 运行结果:(5) 程序1:用重载函数实现#include <iostream>#include <string>using namespace std;void sort(long a )int i, j; long t; for (j=0; j<5; j+) for(i=0;i<5-j;i+) if (ai>ai+1) t=ai;ai=ai+1;ai+1=t; cout<<" the sorted numbers : "<<endl; for(i=0;i<5;i+) cou

15、t<<ai<< " " cout<<endl;void sort(int a )int i, j, t; for (j=0; j<5; j+) for(i=0;i<5-j;i+) if (ai>ai+1) t=ai;ai=ai+1;ai+1=t; cout<<" the sorted numbers : "<<endl; for(i=0;i<5;i+) cout<<ai<< " " cout<<endl; void

16、sort(float a )int i, j; float t; for (j=0;j<5;j+) for(i=0;i<5-j;i+) if (ai>ai+1) t=ai;ai=ai+1;ai+1=t; cout<<" the sorted numbers : "<<endl; for(i=0;i<5;i+) cout<<ai<< " " cout<<endl;int main( ) long a5=12345,10000,87663,27958,36754; int b

17、5=4,3,7,-5,9; float c5=1.2,-3.4,6.7,-2.6,4.5; sort(a); sort(b); sort(c); return 0;运行结果:程序2:用函数模板实现#include <iostream>#include <string>using namespace std;template <typename T >void sort(T a ) int i, j, min; T t; for(i=0;i<5;i+) min=i; for (j=i+1; j<5; j+) if(amin>aj) min=j

18、;t=ai; ai=amin; amin=t; cout<<" The sorted numbers are : "<<endl; for(i=0;i<5;i+)cout<<ai<< " " cout<<endl<<endl;int main( ) long a5=12345,10000, 87663,27958, 36754; int b5=4,3,7,-5,9; float c5=1.2, -3.4, 6.7, -2.6, 4.5 ; sort(a); sort(b); sort(c); return 0;运行结果:用函数模版比重载函数更方便,程序更

温馨提示

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

评论

0/150

提交评论