C++程序设计谭浩强版实验指导书Word下载.docx
- 文档编号:21525909
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:23.69KB
C++程序设计谭浩强版实验指导书Word下载.docx
《C++程序设计谭浩强版实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计谭浩强版实验指导书Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
1.熟悉VisualC++2010集成开发环境的基本命令和功能键。
2.学习完整的C++程序开发过程。
3.理解简单的C++程序结构。
二、实验内容与步骤
本次实验将学习有关VisualC++开发环境的一些知识,并尝试实现一个简单的DOS程序和Windows程序。
通过本次实验,可以了解用VisualC++开发应用程序的全过程。
1、熟悉VisualC++开发环境
我们选择VisualC++那一项就可以了。
下图是VS2010打开后的画面,当然可能你的界面跟我的不一样,没关系,那只是设置问题。
菜单栏我们常用的是File,View和Debug菜单下的菜单项。
工具栏各项其实在菜单栏都有与它们对应的菜单项,功能是一样的。
左侧面板可以放多个视图,我这里放了解决方案浏览器、类视图和资源视图,解决方案浏览器中我们可以看到所有头文件和源文件构成的树,头文件就是.h后缀的文件,源文件就是.cpp后缀的文件,类视图中显示了每个工程的每个类,也是树状结构,在解决方案浏览器或类视图中双击每一项,中间区域都会打开相应的文件或者到类的位置。
资源视图中显示了界面工程中使用的一些界面资源。
中间区域默认是打开startpage,打开一个工程后我们在左侧面板上双击某项时,中间区域会出现相应的界面。
右侧面板上有个Toolbox,是在界面工程中用来往界面资源模板上添加控件的,里面包含了各种控件,直接拖到模板上就行了。
底侧还有几个标签,其中一个是output,这是输出视图,用来输出程序运行信息和我们程序中写的一些调试信息,还有一个FindResult视图,用来显示我们搜索任何字母或单词的结果。
File->
New->
Project项可以创建一个工程,也可以在startpage中点击NewProject...,然后出现的NewProject窗口中有多个工程类型可以选择,Win32ConsoleApplication是Win32控制台程序,MFCApplication是MFC应用程序,可以建立以开发界面程序,Win32Project是Win32程序,EmptyProject是空程序,MFCDLL用来建立生成动态链接库的工程,其它的不常用就不介绍了。
我们要建立一个没有应用程序界面的只有Dos命令行界面的工程就选Win32ConsoleApplication项,我们学习C++基础知识用这个就可以了。
它跟Win32Project的区别是,它的入口是main函数,而Win32Project的入口是WinMain函数。
Open->
Project/Solution可以打开以前建立的工程或者解决方案,一个解决方案中可以包含多个工程,你可以把它理解为多个有关系或者没关系的工程的集合,有时把多个工程放到一个解决方案里调试起来很方便。
在View下的菜单项我们就可以控制它。
View->
SolutionExplorer可以打开或关闭解决方案浏览器视图,View->
ClassView用来控制类视图的显示,View->
ResourceView控制资源视图的显示,当然只有界面工程的资源视图中才会有内容。
Output和View->
FindResults等项大家应该也知道它们的含义了吧。
Debug->
StartDebugging(快捷键是F5)用来开始调试,Debug->
ToggleBreadpoint(快捷键是F9)用来设置断点,设置断点后然后开始调试,程序运行到断点时会停下来,我们用鼠标放到断点处的各个变量上时可以看到当时这些变量的值。
Debug->
StartWithoutDebugging表示不调试直接运行,也就是到断点处也不会停止运行。
StepInto(快捷键是F11)用来单步执行,遇到子函数就进入并且继续单步执行;
StepOver(快捷键是F10)也是单步执行,但在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完而跳到下一步,也就是把子函数整个作为一步。
工具栏上有个下拉列表框,它包含有Debug、Release和ConfigurationManager,选择Debug时为调试模式,生成的可执行程序中包含调试信息,我们可以调试并清楚的看到变量值,选择Release时生成的可执行程序中不含调试信息,在设置断点后看到的变量值可能不准确。
msdn帮助可以点Help->
ViewHelp(快捷键是F1),也可以点开始->
MicrosoftVisualStudio2010->
MicrosoftVisualStudio2010Documentation打开。
2、控制台应用程序的建立
用Appwizard建立一个控制台应用程序,在显示器上输出“Hello,World!
”。
(1)创建项目(project)
首先创建一个项目,用来管理用户的应用程序。
创建项目的步骤为:
1启动visualStudio2010。
2从主菜单中选择菜单项“File”→“New”,打开“New”对话框。
3选择“Projects”标签,从项目列表中单击“Win32ConsoleApplication”选项。
在“projectname”编辑框中键入项目的名字,如“hello”,系统将自动为用户的项目分配一个默认的目录。
也可以在“Location”编辑框中重新输入项目存放路径。
单击“OK”按钮继续。
(2)编辑源程序
在项目中添加一个文件:
1从主菜单中选择菜单项“File”→“New”,打开“New”对话框。
2在“New”对话框中选择“File”标签,单击“C++SourceFile”选项,建立源文件(扩展名为.cpp)。
选中“AddtoProject”复选框。
在右边的“File name”编辑框中为文件指定一个名字,如“Hello”,系统将自动加上后缀“.cpp”。
这时在编辑窗口将自动打开一个新的空白文件,在文件中输入源程序。
本例中输入以下内容:
#include<
>
voidmain()
{
cout<
<
〞hello,world!
〞<
endl;
}
仔细检查输入的内容,确保内容正确。
(3)保存源文件
单击工具栏中的“save”图标,或选择菜单项“File”→“Save”保存源文件。
(4)编译源文件
选择菜单项“Build”→“Compile”来编译源文件,如果输入的内容没有错误,那么,在屏幕下方的输出窗口将会显示:
error(s),0warning(s)
如果在编译时得到错误或警告,则表明源文件出现错误,检查源文件,改正错误后再编译,直至无误。
(5)链接程序
选择菜单项“Build”→“Build”链接程序,如果链接过程中没有错误,则在输出窗口会显示:
如果有错误,应改正,然后重复(4)、(5),直至无误。
(6)运行程序
选择菜单项“Build”→“Execute”运行程序,将显示一个类似于DOS的窗口,在窗口中第一行输出“hello,world!
”,第二行输出“Pressanykeytocontinue”,提示用户按任意键回到开发环境。
3、编写一个简单的C++程序
要求:
输入圆的半径,计算圆的周长和面积。
步骤:
(1)按照上面的步骤创建一个项目,名字为“Circle”。
(2)在项目中增加一个文件,命名为“”。
(3)在文件中输入源程序如下:
#include<
constdoublePI=;
else
cout<
number<
"
不是素数."
判断素数的算法,在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。
这里要注意函数的定义声明的方法和格式。
2、分析程序的运行结果
输入下列程序,运行它,分析得到的结果。
intn=0;
intfunc(intx=10);
voidmain()
inta,b;
a=5;
b=func(a);
”\nlocala=”<
a<
endl<
”localb=”<
b<
endl
”globaln=”<
n<
a++;
func();
intfunc(intx)
inta=1;
staticintb=10;
b++;
x++;
n++;
”parameterx=”<
x<
returna+b;
运行该程序,得到执行结果。
分析得到的结果,说明为什么得到这样的结果。
3、递归函数与非递归函数。
编写一个函数,求从n个不同的数中取r个数的所有选择的个数。
其个数值为:
n!
Crn=
r!
*(n-r)!
其中:
n!
=n*(n-1)*(n-2)*……..*1。
(1)分别用递归和非递归两种方式完成程序设计;
(2)主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入00时,程序结束;
(3)能检查输入数据的合法性,要求n>
=1并且n>
=r;
(4)注意整数能存放的数据范围有限,如何解决?
提示:
(1)可以用double数据类型来存放函数的计算结果。
(2)递归结束条件:
如果r=0,则C(n,r)=1;
如果r=1,则C(n,r)=n。
测试数据:
输入:
53
输出:
10
1020
IputInvalid1
503
1.#IND
00
程序结束
思考问题:
(1)对各种数据类型的字长是否有了新的认识?
(2)递归函数的书写要点是什么?
(3)递归和非递归函数各有哪些好处?
1、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函数求最小公倍数。
(提示:
可以用下面的方法求:
一、利用辗除法或其它方法求得最大公约数;
二、最小公倍数等于两数之积除以最大公约数。
)
要求:
两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。
实验八结构和联合
一、实验目的
1、掌握结构体类型变量的定义和使用。
2、掌握结构数组的概念和使用。
3、掌握链表的概念,初步学会对链表进行操作。
4、掌握联合体的概念与应用。
二、试验内容与步骤
1、输入和运行以下程序。
uniondata
shortints[2];
floata;
intb;
charc[4];
}u;
cin>
[0]>
[1];
s[0]="
[0]<
s[1]="
[1]<
<
a="
b="
c[0]="
c[1]="
c[2]="
[2]<
c[3]="
[3]<
输入两个整数10000、20000给[0]和[1],分析运行结果。
然后将cin语句改为:
;
输入60000给b,分析运行结果。
2、打印学生成绩单,内容包括学号、姓名、三门课(数学MT、英语EN、计算机COMPU)的成绩。
计算每个学生三门课程的总分SUM和平均分AVER。
若三门课成绩都在90分以上者,输出“Y”;
否则输出“N”,并打印学生成绩单,格式如下:
NUMNAMEMTENCOMPSUMAVER>
=90
9501Liufan9598Y
9502Zhanghua9582N
9503Liming688985242N
输入以下程序并调试运行。
#include<
structstudent
intnum;
charname[15];
floatscore[3];
floatsum;
floataver;
charch;
};
studentstu[3];
inti,j;
for(i=0;
i<
3;
i++)
cin>
stu[i].num;
stu[i].name;
for(j=0;
j<
j++)
stu[i].score[j];
}
i++)
stu[i].sum=0;
stu[i].ch='
Y'
;
stu[i].sum+=stu[i].score[j];
if(stu[i].score[j]<
90)
stu[i].ch='
N'
stu[i].aver=stu[i].sum/3;
NUMNAMEMTENCOMPSUMAVER>
=90"
for(i=0;
i<
i++)
stu[i].num<
setw(8)<
stu[i].name<
setw(8)<
stu[i].score[0]
stu[i].score[1]<
stu[i].score[2]
stu[i].sum<
stu[i].aver
setw(5)<
stu[i].ch<
3、设计一个单向链表。
从标准输入读取若干整数,建立链表,每次读入的数放入链表结尾。
当用户输入0时,结束链表的建立工作。
然后从前往后依次输出链表结点中的内容。
(1)链表结点空间动态申请。
(2)因为每次新结点插入在表尾,所以应设一个指针总是指向当前的表尾。
(3)处理申请不到空间的情况。
测试数据:
程序输出:
请输入若干整数建立链表(输入0结束):
用户输入:
12345670
1234567
如果是双向链表,程序要做哪些改动?
4、有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课的平均成绩,以及最高分学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
用input函数输入10个学生的数据;
用average函数求平均分;
用max函数找出最高分的学生数据;
平均分和最高分学生的数据都在主函数中输出。
5、建立一个链表,每个结点包括:
学号、姓名、性别、年龄、。
输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
实验九类与对象
1、掌握类和对象的定义和使用。
2、理解构造函数和析构函数的作用。
3、学习使用静态成员和内联成员函数。
4、掌握从现有类派生出新类的方式。
5、了解基类成员在派生类中的访问控制。
6、了解虚函数对多态性的支持。
1、构造函数和析构函数的调用。
输入和运行以下程序。
classA{
int*a;
public:
A(intx)
a=newint(x);
”Constructor:
”<
*a<
~A(){cout<
”Destructor:
”<
*a<
deletea;
}
Ax(3),*p;
p=newA(5);
deletep;
2、派生类构造函数和析构函数的调用。
inta;
A(intaa=0):
a(aa)
{cout<
”ConstructorA:
~A(){cout<
”DestructorA:
classB:
publicA{
intb;
B(intaa,intbb):
A(aa),b(bb)
{cout<
”ConstructorB:
~B(){cout<
”DestructorB:
{
Bx(2,3),y(4,5);
3、多态性的实现。
(1)输入以下程序并调试运行,分析其执行结果。
promote(3);
ay();
m1.displayStatus();
\n这是一个兼职技术人员:
techniciant1;
(2);
t1.displayStatus();
\n这是一个销售经理:
salesmanagersm1;
sm1.promote
(2);
sm1.displayStatus();
\n这是一个兼职推销员:
salesmans1;
s1.pay();
s1.displayStatus();
撰稿人:
2009-9-26
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 谭浩强版 实验 指导书