C++实验指导书 巢湖学院.docx

上传人:b****6 文档编号:16180833 上传时间:2023-07-11 格式:DOCX 页数:49 大小:49.46KB
下载 相关 举报
C++实验指导书 巢湖学院.docx_第1页
第1页 / 共49页
C++实验指导书 巢湖学院.docx_第2页
第2页 / 共49页
C++实验指导书 巢湖学院.docx_第3页
第3页 / 共49页
C++实验指导书 巢湖学院.docx_第4页
第4页 / 共49页
C++实验指导书 巢湖学院.docx_第5页
第5页 / 共49页
C++实验指导书 巢湖学院.docx_第6页
第6页 / 共49页
C++实验指导书 巢湖学院.docx_第7页
第7页 / 共49页
C++实验指导书 巢湖学院.docx_第8页
第8页 / 共49页
C++实验指导书 巢湖学院.docx_第9页
第9页 / 共49页
C++实验指导书 巢湖学院.docx_第10页
第10页 / 共49页
C++实验指导书 巢湖学院.docx_第11页
第11页 / 共49页
C++实验指导书 巢湖学院.docx_第12页
第12页 / 共49页
C++实验指导书 巢湖学院.docx_第13页
第13页 / 共49页
C++实验指导书 巢湖学院.docx_第14页
第14页 / 共49页
C++实验指导书 巢湖学院.docx_第15页
第15页 / 共49页
C++实验指导书 巢湖学院.docx_第16页
第16页 / 共49页
C++实验指导书 巢湖学院.docx_第17页
第17页 / 共49页
C++实验指导书 巢湖学院.docx_第18页
第18页 / 共49页
C++实验指导书 巢湖学院.docx_第19页
第19页 / 共49页
C++实验指导书 巢湖学院.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++实验指导书 巢湖学院.docx

《C++实验指导书 巢湖学院.docx》由会员分享,可在线阅读,更多相关《C++实验指导书 巢湖学院.docx(49页珍藏版)》请在冰点文库上搜索。

C++实验指导书 巢湖学院.docx

C++实验指导书巢湖学院

实验一VisualC++/C++Builder初识与选择分支程序设计

实验目的

●了解VisualC++/C++Builder的集成开发环境

●初步掌握在VC++或C++Builder中开发应用程序的一般步骤

●初步掌握程序编辑、调试的基本方法

●掌握单分支结构语句:

if…

●掌握双分支结构语句:

if…else…

●掌握多分支选择结构语句:

switch…case…;

实验示例

[例1-1]在VC++开发环境中,编写一个计算三角形面积的C++程序,调试运行程序,运行时输入三角形的三条边。

实现步骤:

1.启动VisualC++开发环境

通过执行菜单“开始”→“程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++6.0”项,启动VisualC++开发环境。

2.编辑程序

1)执行VC++菜单“文件”→“新建”项,打开新建对话框;

2)在对话框中单击“文件”标签,在弹出的“文件”选项卡中单击“C++SourceFile”选项;

3)在“目录”文本框中输入或选择存放程序的文件夹,在“文件”文本框中输入程序文件名;

4)单击“确定”按钮,系统打开文件编辑窗口,参照如下代码,编写计算三角形面积的源程序:

#include

#include

usingnamespacestd;

voidmain()

{

doublea,b,c,s,area;

cout<<”a,b,c?

”;

cin>>a>>b>>c;//键盘输入三角形三条边长

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

cout<<”area:

”<

}

3.编译和链接程序

1)执行VC++菜单“编译”项,屏幕出现“询问是否创建默认项目工作区”对话框;

2)单击“是”按钮,出现“询问是否保存文件”对话框;

3)单击“是”按钮保存文件后,系统开始对源程序进行编译。

4)若有语法错误,将在输出区窗口中显示错误信息。

双击某条错误信息,文件编辑窗口的对应程序行的左边将出现一个箭头。

依据提示信息修改程序,然后重新编译程序,直到没有错误为止。

5)执行VC++菜单“编译”→“构建”项,系统将对编译好的程序进行链接。

若出现链接错误,依据错误信息修改程序后,再进行编译和链接,直到正确。

4.执行目标程序

1)执行VC++菜单“编译”→“执行”项,程序开始执行,执行到键盘输入语句时,系统显示“输入数据和输出结果”窗口,等待用户输入数据。

2)依题输入3个实数,作为三角形的三条边的边长,程序继续执行,显示计算结果。

3)若运行时出现错误,分析出错原因,是运行时输入的数据有误,还是程序代码有错?

(均非语法错误),依据需要修改程序、重新编译、链接和执行程序。

7.关闭程序项目

执行菜单“文件”→“关闭工作区”项,将关闭程序项目。

8.打开已有项目。

执行菜单“文件”→“打开”项,可打开已有程序项目。

[例1-2]在C++Builder集成开发环境中,完成上例的程序编辑、调试和运行。

1.启动C++Builder开发环境

通过执行菜单“开始”→“程序”→“BorlandC++Builder6”→“C++Builder6”项,启动C++Builder开发环境。

2.创建应用程序项目

本例需要建立一个控制台应用程序,执行菜单【File】→【CloseAll】关闭当前项目,再执行菜单【File】→【New】→【ConsoleWizard】项,或单击工具栏上的Newitems快捷钮

打开的对话框来创建控制台应用程序项目。

在ConsoleWizard对话框中,做如上图所示的选择后确定。

系统自动创建项目和初始化源程序文件。

3.编辑程序

在代码编辑窗口中,编写实现功能要求的程序。

在C++Builder中,可以省略std命名空间的引用声明,系统自动引用和链接。

4.保存程序项目

执行菜单【File】→【SaveProjectAs…】项,或执行菜单【File】→【SaveAll】项,或单击SaveAll快捷钮

,在打开的保存源程序文件对话框中输入文件名,确认保存源文件(扩展名cpp);在打开的保存项目文件对话框中,选择项目保存位置,编辑项目文件名,确认保存项目(扩展名bpr)。

5.编译、和执行和调试程序

单击Run快捷钮

,或按F9键,编译和执行程序。

也可以先执行【Project】→【CompileUnit】编译命令,再运行程序。

C++Builder的集成环境的调试命令与TurboC的相似,Borland公司一脉相承,可以方便地设置断点、跟踪运行、监视表达式的值等。

[例1-3]创建和编写一个控制台应用程序:

程序执行时,分别输入被除数和除数,计算后输出商,若除数为0,程序给出提示。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{

doublea,b;

cout<<”被除数:

”;cin>>a;

cout<<”除数:

”;cin>>b;

if(b)

cout<<”商是:

”<

else

cout<<”除数为0,无意义。

”<

}

3.编译、链接和执行程序

[例1-4]新建一个程序。

程序运行后,输入百分制的成绩,输出“优”、或“良”、或“合格”、或“不合格”等对应的等级。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{intscore;

cout<<”输入百分制成绩:

”;

cin>>score;

switch(score/10)

{case10:

case9:

cout<<”优”;break;

case8:

cout<<”良”;break;

case7:

case6:

cout<<”合格”;break;

default:

cout<<”不合格”;

}

}

3.编译、链接和执行程序

实验习题

1.编写一个控制台应用程序,程序实现输入圆的半径,输出圆的周长和面积。

2.编写一个程序,其中声明和定义如下函数:

doublemax(doublex,doubley);

函数返回2个参数中的较大值。

编写主函数,调用max函数,验证程序运行结果。

3.设计一个C++程序,实现运行时,输入X的值,按下式计算,并显示Y的值:

X≥0

Y=

X<0

4.编写一个C++程序,实现计算和输出一元二次方程的解,3个系数在程序运行时输入。

提示:

输入a、b、c三个系数后,分下列情况处理:

b=0→无意义

 a=0,b?

     否则→输出解:

-c/b

a?

     d>=0→输出解:

0.5*(-b+sqrt(d))/a

和0.5*(-b-sqrt(d))/a

否则,d:

=sqr(b)-4*a*c

    否则→无实数解

5.编写一个C++控制台应用程序,实现判断按键的类型是数字、字母或其它。

实验二循环处理程序设计与数组应用

实验目的

●掌握循环语句:

for…

●掌握循环语句:

do…while…

●掌握循环语句:

while…

●掌握跳转语句:

break和contitue

●理解数组的概念

●掌握数组的定义和数组元素的访问方法

●理解运用数组的一些算法

实验示例

[例2-1]设计一个控制台应用程序:

实现计算和输出3到100之间的所有素数,以及素数的个数。

解题思路:

所谓素数,即仅能被1和自身整除的数。

判定n是否为素数,可以用n相继(循环)除于2到n/2之间的整数,若出现余数为0,即n被其中某个数整除,则n非素数,中断循环判断;否则,直到n除于n/2的余数非0,则n为素数。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{

intn,j,s;

s=0;//素数个初始为0

for(n=3;n<=100;n++)

{

for(j=2;j<=n/2;j++)

if(n%j==0)break;//n被某数i整除,退出循环判断

if(j>n/2)

{

s++;

cout<

}

}

cout<<”共有”<

}

3.编译、链接和执行程序

[例2-2]设计一个控制台应用程序,实现计算任意输入的两个正整数的最大公约数。

解题思路:

求解m和n的最大公约数,采用欧几里德的算法如下:

①以n除m,令余数为r;②若r为0,则n为解,输出并结束;③否则,令m为n,n为r,重复步骤①继续进行。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{

intm,n,r;

cout<<”输入一个正整数:

”;cin>>m;

cout<<”输入另一个正整数:

”;cin>>n;

do

{

r=m%n;

m=n;

n=r;

}while(r);

cout<<”最大公约数是:

”<

}

或参考以下代码:

#include

usingnamespacestd;

voidmain()

{

intm,n,r;

cout<<”输入一个正整数:

”;cin>>m;

cout<<”输入另一个正整数:

”;cin>>n;

r=m%n;

while(r)

{

m=n;

n=r;

r=m%n;

}

cout<<”最大公约数是:

”<

}

3.编译、链接和执行程序

[例2-3]设计一个控制台应用程序:

随机产生并显示10个1到100之间的整数,排序后再输出这10个整数。

解题思路:

定义一个数组变量,元素为int类型;利用随机数函数rand()循环初始化数组的每一个元素并输出。

排序时采用直接选择排序算法:

设有n个元素需按从小到大的次序排列,可用如下n-1趟的选择过程完成:

第1趟,从第1~第n的n个元素中,选择出最小的与第1个元素交换;

第2趟,从第2~第n的n-1个元素中,选择出最小的与第2个元素交换;

...

第n-1趟,从第n-i~第n的2个元素中,选择出最小的与第n-1个元素交换;排序结束。

最后循环一遍输出每个元素。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

#include

voidmain()

{

inti,j,k,temp;

inta[10];

srand(time(0));//初始化随机系列

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

{

temp=rand();//rand()返回一个1到32767之间的随机整数

a[j]=temp%100+1;

cout<

}

for(i=0;i<9;i++)//9趟的选择排序

{

k=i;//设k为第i趟选择的最小元数的初始下标

for(j=i+1;j<10;j++)ifa[j]

if(k!

=j)

{

temp=a[k];a[k]=a[j];a[j]=temp;

}

}

for(j=0;j<10;j++)cout<

cout<

}

3.编译、链接和执行程序

[例2-4]设计一个控制台应用程序:

由键盘任意输入一串字符,统计这个字符串中字母字符、数字字符和其它字符的个数。

解题思路:

定义一个字符数组,用于保存输入的字符串;利用循环识别字符串中每个字符(数组元素),并统计各类字符的个数。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{chars[300];

intj,a=0,b=0,c=0;

cout<<"连续按键,直到回车为止"<

cin>>s;

for(j=0;j

if(((s[j]>='A')&&(s[j]<='Z'))||((s[j]>='a')&&(s[j]<='z')))a++;

else{

if((s[j]>='0')&&(s[j]<='9'))b++;

elsec++;

}

cout<<"字母;"<

cout<<"数字;"<

cout<<"其他;"<

}

3.编译、链接和执行程序

[例2-5]设有如下数列:

0、1、1、2、3、5、8、13、…。

除第1项和第2项外,数列的任一项是其前2项的和。

编写一控制台应用程序,输出数列的前30项及其总和。

解题思路:

利用整型数组存储数列的各项,初始化数组的前2个元素,从第3个元素开始循环递推计算其余元素的值,最后输出。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

voidmain()

{

intfib[30];

intj,sum=1;

fib[0]=0;fib[1]=1;

for(j=2;j<30;j++)

{

fib[j]=fib[j-2]+fib[j-1];

sum+=fib[j];

}

for(j=0;j<30;j++)cout<

cout<

”<

}

3.编译、链接和执行程序

实验习题

1.设计一个C++控制台应用程序,运行时,输入两个正整数,计算并输出这两个数之间所有不能被3和7整除的数的和。

2.设计一个利用下列公式计算圆周率π的C++程序,要求精度控制在0.0000001内。

π=4×(1/1-1/3+1/5-1/7+…)

提示:

括号中是一个数列的和,数列的第n项是1/(2n-1),奇数项为正,偶数项为负。

利用循环逐项求和,直到该项的绝对值小于0.0000001为止。

3.编写一个控制台应用程序,运行时输入10个整数,输出其中的最大数和次大数。

提示:

以数组存储逐个输入的10个整数,查找其中的2个最大的数时,首先将数组的前2个元素的较大者初始为最大数,较小的初始为次大数,然后从第3个数开始逐个与最大数和次大数比较,比较时仅有两种情形需考虑:

①当前元素比最大数大,则原最大数成为次大数,当前数为最大数;②当前元素仅比次大数大,则当前数为次大数。

4.编写一个控制台应用程序,输出一个6行的杨辉三角形。

提示:

以二维数组存储杨辉三角形的每个元,初始化其第1行第1列、第2行第1列、第2行第2列等3个元素的值为1,之后从第3行开始逐行计算各列元素的值,计算方法为:

第1列和最后一列(第i行有i列)的值为1,其余元素的值是上一行前一列和上一行上一列的数值的和。

最后逐行输出显示。

实验三指针、引用与函数

实验目的

●掌握指针的定义和依据指针访问数据的方法

●掌握引用的概念和用法

●掌握函数的声明、定义和调用

●掌握函数中指针或引用类型参数的用法

实验示例

[例3-1]编写一个C++控制台应用程序,将某个位数不确定的正整数进行三位分节后输出,例如输入1234567,则输出1,234,567。

解题思路:

自定义一个函数,其中实现将传递的整数转换成字符串,再定义另一个函数将字符串由后向前进行分节,即每3个字符插入一个逗号,利用指针的运算寻找插入的位置。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

#include

char*separate(int);

char*inttostr(int);

voidmain()

{

intn;

char*p;

cout<<”输入一个正整数:

”;

cin>>n;

p=separate(n);

cout<<”分节输出:

”<

}

char*separate(intnum)

{

char*p1,*p2=inttostr(num),*p3,*pt;

intcount=1;

p1=p2;

while(*p2++!

=’\0’);

p3=p2-1;//p3指向最后一个字符

p2=p2-2;

while(p2>p1)//由后向前

{

if(count==3)

{

pt=p3++;

while(pt>=p2)*(pt+1)=*pt--;

*p2=’,’;

count=0;

}

count++;

p2--;

}

returnp1;

}

char*inttostr(intnum)//将整数转换成对应数字字符串

{

char*p,*p1,*p2,temp;

p=p1=p2=newchar[30];

while(num)

{

*(p2++)=num%10+’0’;

num/=10;

}

*(p2--)=’\0’;

while(p2>p1)

{

temp=*p2;

*p2--=*p1;

*p1++=temp;

}

returnp;

}

3.编译、链接和执行程序

[例3-2]编写程序,实现两个字符串变量的交换。

解题思路:

使用引用来交换两个字符串指针的值。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

#include

voidswap(char*&x,char*&y)

{

char*temp;

temp=x;x=y;y=temp;

}

voidmain()

{

char*ap,*bp;

cout<<”输入一个字符串:

”;cin>>ap;

cout<<”输入另一个字符串:

”;cin>>bp;

swap(ap,bp);

cout<<”第一个字符串:

”<

cout<<”第二个字符串:

”<

}

3.编译、链接和执行程序

[例3-3]例4-3的斐波那契数列:

0、1、1、2、3、5、8、13、…。

除第1项为0和第2项为1外,数列的任一项是其前2项的和。

编写计算数列的第n项的函数,调用函数输出数列的第30项。

解题思路:

斐波那契数列可以如下形式的函数表示:

0当n=1时,

f(n)=1当n=2,

f(n-1)+f(n-2)其它

自定义一个递归函数,返回参数n指定的数列项,计算方法是:

当n=1时,函数返回0;当n=2时,函数返回1;否则,返回用参数n-1调用自身函数的值与用参数n-2调用自身函数的值的和。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

intFib(intn)

{

switch(n)

{

case1:

return0;

case2:

return1;

default:

returnFib(n-1)+Fib(n-2);//递归调用函数

}

voidmain()

{

cout<<”数列的第30项是:

”<

}

3.编译、链接和执行程序

实验习题

1.编写一个控制台应用程序,运行时输入一个字符串,然后逆序输出该字符串。

2.将实验四习题1中查找n个元素的一维数组中的最大值和次大值的算法定义成一个函数,改造并完成该题。

实验四类与对象

实验目的

●掌握类和对象的概念、定义和访问方法

●掌握不同类型成员的访问限制

●掌握构造函数和析构函数的使用方法

实验示例

[例4-1]运用面向对象程序设计方法编写一个程序,计算两个给定长方形的面积,其类中设计一个用于计算两个长方形的总面积成员函数。

解题思路:

设计一个类Rect,包含数据成员len(表示长度)、wid(表示宽度),以及求面积的公有成员函数area()、求两个长方形的总面积成员函数addarea(),并设计两个重载的构造函数。

实现步骤:

1.新建Win32ConsoleApplication程序项目

2.在文件编辑区窗口编写如下程序代码:

#include

usingnamespacestd;

#include

classRect

{

floatlen,wid;

public:

Rect(){};//默认的构造函数(内联的)

Rect(float,float);//构造函数

floatarea(){returnlen*wid;};//求面积(内联的)

voidaddarea(Rect,Rect);//求两个长方形的面积

};

Rect:

:

Rect(floata,floatb)

{

len=a;wid=b;

}

voidRect:

:

addarea(Rectr1,Rectr2)

{

cout<<”总面积:

”<

}

voidmain()

{

RectA

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2