C++实验一.docx

上传人:b****3 文档编号:3883994 上传时间:2022-11-26 格式:DOCX 页数:16 大小:252.75KB
下载 相关 举报
C++实验一.docx_第1页
第1页 / 共16页
C++实验一.docx_第2页
第2页 / 共16页
C++实验一.docx_第3页
第3页 / 共16页
C++实验一.docx_第4页
第4页 / 共16页
C++实验一.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++实验一.docx

《C++实验一.docx》由会员分享,可在线阅读,更多相关《C++实验一.docx(16页珍藏版)》请在冰豆网上搜索。

C++实验一.docx

C++实验一

C++程序设计

实验报告

课程名称:

C++程序设计

姓名:

实验名称:

C++面向对象程序设计

学号:

任课教师:

张明卫

专业:

软件工程

指导教师:

张明卫

班级:

实验成绩:

批阅教师签字:

一.实验目的

1)学习编写简单的C++程序,并掌握C++程序的基本格式与规范。

2)理解C++程序结构的特点。

3)掌握函数的定义和调用方法。

4)练习重载函数的使用。

5)掌握指针的使用方法。

6)练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

7)熟悉流类库中常用的类及其成员函数的用法。

8)学习标准输人输出及格式控制。

9)学习对文件的应用方法(二进制文件、文本文件)。

10)学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。

二、实验环境

使用vc6.0作为编译器,操作系统为windows7;

三、实验内容与实验过程及分析

Experiment1-1输人并运行所给的参考程序1,并将程序中的注释部分也输人计算机,体会和理解程序的基本格式规范。

核心代码:

//参考程序1

//sum.cpp

#include

intadd(inta,intb);

intmain()

{

intx,y,sum;

cout<<"Entertwonumbers:

\n";

cin>>x;

cin>>y;

sum=add(x,y);

cout<<"Thesumis:

"<

return0;

}

intadd(inta,intb)

{

intc;

c=a+b;

returnc;

}

涉及知识点:

输入与输出流

 

Experiment1-2分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。

程序名:

lab1_2.cpp。

核心代码:

#include

intmax1(inta,intb);

intmax1(inta,intb,intc);

doublemaxl(doublea,doubleb);

doublemaxl(doublea,doubleb,doublec);

main()

{

intx1,y1,x2,y2,z2,max_1,max_2;

doublex4,y4,z4,max_4,x3,y3,max_3;

cout<<"Entertwointegernumbers:

\n";

cin>>x1>>y1;

max_1=max1(x1,y1);

cout<<"Themaxnumberis:

"<

cout<<"Enterthreeintegernumber:

\n";

cin>>x2>>y2>>z2;

max_2=max1(x2,y2,z2);

cout<<"Themaxnumberis:

"<

cout<<"Entertwodoublenumber:

\n";

cin>>x3;

cin>>y3;

max_3=max1(x3,y3);

cout<<"Themaxnumberis:

"<

cout<<"Enterthreedoublenumber:

\n";

cin>>x4>>y4>>z4;

max_4=max1(x4,y4,z4);

cout<<"Themaxnumberis:

"<

}

intmax1(inta,intb)

{

if(a>=b)

{

returna;

}

else{

returnb;

}

}

intmax1(inta,intb,intc)

{

if(a>b&&a>c)

{

returna;

}

if(b>a&&b>c)

{

returnb;

}

if(c>a&&c>b)

{

returnc;

}

}

doublemax1(doublea,doubleb)

{

if(a>=b)

{

returna;

}

else

{

returnb;

}

}

doublemax1(doublea,doubleb,doublec)

{

if(a>b&&a>c)

{

returna;

}

if(b>a&&b>c)

{

returnb;

}

if(c>a&&c>b)

{

returnc;

}

}

涉及知识点:

函数重载

 

Experiment1-3编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵:

核心代码:

#include

voidmove(int**matrix)

{

inti,j,k,c;

for(i=0;i<1;i++)

{

for(j=0;j<3;j++){

k=matrix[i][j];

matrix[i][j]=matrix[j][i];

matrix[j][i]=k;

}

}

c=matrix[1][2];

matrix[1][2]=matrix[2][1];

matrix[2][1]=c;

 

}

main()

{

inti,j;

int**p;

p=newint*[3];

cout<<"输入矩阵的元素:

"<

for(i=0;i<3;i++)

{

p[i]=newint[3];

for(j=0;j<3;j++)

{

cout<<"第"<

";

cin>>p[i][j];

}

}

cout<<"输入的矩阵的为:

"<

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

cout<

cout<

}

move(p);

cout<<"转置后的矩阵的为:

"<

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

cout<

cout<

}

delete[]p;

}

 

涉及知识点:

数组的运用

Experiment1-4

使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能

核心代码:

#include

main()

{

inti,j,t;

inta[3][3],(*p)[3],*q;

printf("input%ddatas:

\n",3*3);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("beforechange:

\n");

p=a;

for(;p

{

for(q=*p;q<*p+3;q++)

printf("%d\t",*q);

printf("\n");

}

printf("afterchange:

\n");

q=a[0];

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{

t=*(q+3*i+j);

*(q+3*i+j)=*(q+3*j+i);

*(q+3*j+i)=t;

}

for(p=a;p

{

for(q=*p;q<*p+3;q++)

printf("%d\t",*q);

printf("\n");

}

}

涉及知识点:

指针的运用

Experiment1-5编写程序,用二进制方式读写指定的文件a.bin,在每一行前加行号,写入另一个二进制文件b.bin中,从b.bin中读取数据输出到屏幕。

核心代码:

#include

#include

#include

#include

#include

usingnamespacestd;

voidnew_line(ifstream&fin,char&temp);

intmain(intargc,char*argv[])

{

ifstreamfin;

ofstreamfout;

intnum_line=1;

chartemp,inFileName[128];

stringbuffer;

if(argc==1)

{

printf("请用格式:

SetLineNUmfilename\n");

exit(0);

}

else

{

strcpy(inFileName,argv[1]);

}

cout<<"正打开输入文件...\n";

fin.open(inFileName);//打开输入文件

if(fin.fail())

{

cout<<"输入文件打开失败!

\n";

exit

(1);

}

cout<<"正打开输出文件...\n";

fout.open("b.bin");//打开输出文件

if(fout.fail())

{

cout<<"输出文件打开失败!

\n";

exit

(1);

}

do

{

new_line(fin,temp);

getline(fin,buffer);

if(buffer.length()>0)

{

fout<

";//设置行号

fout<

fout<

}

}while(!

fin.eof());

fin.close();//关闭文件

fout.close();

cout<<"成功关闭输入输出文件。

\n";

cout<<"程序结束。

\n";

return0;

}

voidnew_line(ifstream&fin,char&temp)

{

do//跳过行首空格和空行

{

fin.get(temp);

}while(isspace(temp));

}

}

 

涉及知识点:

文件的输入输出流

五、实验总结

1.基本掌握如何操作C++的界面,包括运行,编译,调试等过程;

2掌握基本数据类型变量和常量、运算符与表达式的简单应用;

理解了函数重载

3.学会使用vc6.0开发环境中的debug调试功能:

单步执行、设置断点、观察变量值;

熟练使用快捷键的使用。

4.基本掌握函数的运用,并对C语言的复习与运用,认识了C++与C语言的异同。

六、思考题

1)重载函数是通过什么来区分?

答:

区分重载方法的依据在于这些方法具有不同的方法特征。

所谓方法特征是指方法的参数的数量、顺序和类型。

不同的方法特征指参数的数量、顺序和类型至少有一个不相同。

2)new和delete操作符与C语言中的malloc()和free()函数有何异同点?

答:

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。

它们都可用于申请动态内存和释放内存。

2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。

对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。

由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。

3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。

注意new/delete不是库函数。

4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存

3)C++提供的输入输出操作与C语言的输入输出操作的异同点?

答:

c语言中的scanf和printf,他们不是类型安全的,而且没有扩展性。

对于C++来说,因为类型安全和扩展性是C++的

基石,另外,scanf/printf系列函数把要读写的变量和

控制读写格式的信息分开来

4)什么是流?

使用流有那些好处?

答:

流是C++标准库类的一个类,常见的有输入流,输出流,使用流不需要明确确定输入字符的格式,譬如输出整形,C中为printf("%d",i);而C++中只要cout<

方便很多,

5)C++与定义了那些流?

他们分别与什么设备相连?

答:

标准输入输出流

cincout控制台

文件流

ifstreamofstream文件

字符串流

istrstreamostrstream字符串

七、参考文献

无。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1