目求
1. 学Visual C++60集成环境掌握源程序编辑方法
2. 掌握Visual C++60集成开发环境中编译调试运行程序方法
3. 通运行简单C++程序初步解C++源程序特点
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕C++程序设计步骤
C++程序设计分成5步骤:
1. 分析问题根实际问题分析需求确定解决方法
2. 编辑源程序编写C++源程序利编辑器源程序输入计算机中某文件中C++源文件扩展名cpp〞
3. 编译程序编译源程序检查语法错误生成目标代码文件目标代码文件扩展名obj〞
4. 连接程序目标程序库函数进行连接生成执行文件执行文件扩展名exe〞
5. 运行程序执行执行文件分析运行结果假设算法错误进步进行修改编译调试
编译连接运行程序程中出现式样错误断修改源程序重复程直获正确结果止
〔二〕Visual C++60机操作方法
Visual C++60系统包含许独立组件编辑器编译器调试器种样开发Windows环境C++程序设计工具中重名Developer Studio集成开发环境〔IDE〕Developer StudioVisual C++工具结合起集成窗口话框菜单工具栏快捷键宏组成谐系统通该集成环境程序员观察控制整开发进程
Visual C++60调试C++程序步骤:
1 启动Visual C++60系统
启动Visual C++60系统种方法常见通鼠标单击开始〞菜单选择程序〞选择Microsoft Visual Studio 60选择Microsoft Visual C++ 60启动Visual C++60果已桌面建立Microsoft Visual C++ 60图标鼠标双击该图标启动Visual C++60Visual C++60启动成功产生图11示Visual C++集成环境
图11 典型Developer Studio窗口
图11显示典型Developer Studio窗口分局部:窗口顶部菜单工具栏中包括File〔文件〕〞Edit〔编辑〕〞View〔视图〕〞Insert〔插入〕〞Project〔工程〕〞Build〔编译连接运行〕〞Tools〔工具〕〞Windows〔窗口〕〞Help〔帮助〕〞等菜单分应拉子菜单左面子窗口工作区窗口工作区右面编辑子窗口面输出子窗口
种话框外Developer Studio显示两种类型窗口文档窗口停窗口文档窗口般带边框子窗口中含源代码文图形文档Window子菜单中列出屏幕铺方式层叠方式显示文档窗口命令Developer Studio窗口包括工具栏菜单栏停式窗口
开发环境两停窗口――Workspace〔工作区〕窗口Output〔输出〕窗口外Debugger〔调试器〕停窗口调试程中显示
停窗口固定Developer Studio户区顶端底端侧面者浮动屏幕方停窗口浮动着固定着总出现文档窗口面样保证焦点窗口移时浮动工具栏直见意味着文档窗口偶尔会起消失似例果正文编辑器中编辑源代码时翻开占整Developer Studio户区停窗口源代码文档会消失隐藏新窗口解决方法关覆盖窗口拖挡眼方
值注意述种部件包括子窗口菜单栏工具栏位置成变根喜重新安排
2 创立工程文件
通常工程形式控制理C++程序文件C++工程中存放特定程序全部信息包含源程序文件库文件建立程序编译器工具清单C++工程工程文件形式存储磁盘
图12 新建工程话框
图13 新建工程导话框
生成工程操作步骤:
〔1〕选择集成环境中File〞菜单中New〞命令产生New〞话框图12示
〔2〕选择话框中Projects〞标签便生成新工程产生新工程时系统动生成工程工作区新工程参加该工程工作区中
〔3〕工程类型清单中选择Win32 Console Application〞工程表示生成Windows 32位控制台应程序工程
〔4〕Location〞文框中输入存放工程文件文件夹路径C\DOCUMENTS AND SETTINGS\YU YONG YAN\桌面\新建文件夹〞
〔5〕Project Name〞文框中输入工程名例:Exe1_1
〔6〕检查Platforms〞文件框中否已显示Win 32表示开发32位应程序
〔7〕单击New〞话框中OK〞钮产生话框导图13示
选An empty project〞Finish〞钮显示验证话框直接OK〞钮时产生工程文件系统动加文件扩展名dsw〞
3 创立C++源程序文件参加工程文件
〔1〕选择File〞菜单中New〞命令产生New〞话框图14示
图14 新建文件话框
〔2〕选择话框中Files〞标签
〔3〕文件类型清单中选择C++ Source File〞工程表示生成C++源程序
〔4〕File〞文框中输入C++源程序文件名系统动加文件扩展名cpp〞例:Exe1_1_1cpp
〔5〕假设Add to project〞复选框没选中单击该复选框选中表示系统指定源程序文件参加前工程文件中
〔6〕单击OK〞钮时建立新C++源程序文件已参加前工程文件中产生图15示窗口
该窗口三子窗口左边子窗口工程工作区窗口右边子窗口源程序编辑窗口输入编辑源程序边窗口信息输出窗口显示出错信息调试程序信息
4 输入编辑源程序
源程序编辑窗口输入例11中源程序代码图15示
5 保存源程序文件
选择File〞菜单中Save〞命令源程序保存相应文件中
6 编译连接
图15 Visual C++60工作窗口
选择Build〞菜单中Compile〞Build〞命令源程序编译编译连接产生执行文件系统动加文件扩展名exe〞例:Exe1_1_1exe
编译连接期间假设出现错误信息输出窗口出错误警告信息改正错误重新编译编译连接源程序直没错误止
7 运行
选择Build〞菜单中Execute〞命令VC++集成环境控制运行程序启动程序控制台窗口运行Windows中运行DOS程序窗口类似见图
图16 运行结果
注意:单击工具栏中〞钮(BuildExecute)者快捷键Ctrl+F5直接编译运行源程序
8 翻开已存工程文件
两种方法翻开已存工程文件:
〔1〕选择File〞菜单中Open workspace〞命令然弹出话框中选择翻开工程文件
〔2〕选择File〞菜单中Recent workspaces〞命令然选择相应工程文件
特提醒:调试应程序时Visual C++集成环境次翻开工程文件程序调试完成开始输入程序时必须先关闭前工程文件然新源程序建立新工程文件否出现预测错误
关闭前工程文件方法:选择File〞菜单中Close workspace〞命令
9 退出Visual C++集成环境
选择File〞菜单中Exit〞命令退出集成环境
〔三〕验证分析程序
1.设计C++程序输出信息:
***************
Hello
***************
解:
# include
void main()
{
cout<< ***************<<'\n'
cout<< Hello<<'\n'
cout<< ***************<<'\n'
}
运行结果:
***************
Hello
***************
2.设计程序键盘输入圆半径求周长面积
解:
# include
void main()
{
float sr
cout<<请输入圆半径<
s314159*r*r
cout<< 圆面积 <
运行结果:请输入圆半径:5
圆面积:785397
〔四〕完成实验工程
1 设计程序键盘输入写字母转换成写字母输出
2 输入球半径求外表积体积
四课作业
撰写实验报告
五实验机时
2标准学时
实验二 数类型表达式输入输出
目求
1.掌握C++语言数类型熟悉定义整型字符型实型变量赋值方法解类型数输出时格式转换符
2.学会C++关算术运算符包含运算符表达式特加〔++〕减〔——〕运算符
3. 进步熟悉C++程序编辑编译连接运行程
4. 掌握数输入输出方法
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证分析程序
1.编写程序完成变量x变量y值交换调试程序观察运行结果
交换变量x变量y值时变量z进行交换
完整参考程序:
#include
void main()
{
int xyz A
cout<
cout<<输入x<
xy
yz
cout<<输出x<
思考:
l 键盘分格式输入两组数观察程序运行结果:
53〔回车〕
5 3〔回车〕
l 程序中xyz命名autobreakcase观察否出错?分析原
l 程序A行x改写X观察否出错?分析原
l 修改程序条件运算符输出两数中较数
2.编程序输入xyz值计算值
表达式值定整数程序中变量类型应采实型
参考程序:
#include
void main()
{
float xyzef w A
cout<
e (x+1)*(y1) B
fx+y C
wef D
cout<
思考:
l 输入x=54y=31z=27观察程序运行结果
l 程序中A行改int xyzefw 〞输入x=54y=31z=27观察程序运行结果
l 程序中A行改float xyzw〞 BCD行改w(x+1)*(y1)x+y〞观察程序运行结果
3.编写程序键盘输入三位正整数倒序输出例:输入861输出168
输入三位数整数变量类型整型进行处理采求余数方法计算位数然逆序输出参考程序:
#include
void main()
{
int nijk
cout<<输入三位正整数n
cin>>n
in10 i存放位数
n(ni)10 掉位数
jn10 j存放十位数
n(nj)10 掉十位数
kn k存放百位数
ni*100+j*10+k
cout<<逆转数<
思考:
l 修改程序先取百位数取十位数取位数
4.例测试数类型间数转换分析程序运行结果
#include
void main()
{
int a32b
double c27d
char e'D'f
ba+c A
da+c
fa+e
cout< cout<
思考:
l 修改程序A行b输出值四舍五入
l 修改程序B行整型值输出f
l 分析C行数值类型
〔二〕完成实验工程
1 输入二整数ab实现二数交换〔第三变量〕
2 键盘输入三角形三边长输出三角形周长面积〔处假设构成三角形〕
3 编写程序输入两整数输出商余数
四课作业
1 键盘输入三位整数nabc左右abc表示位数字现求次输出右左位数字输出三位数mcba例:输入123输出321〔采实验中已方法〕
2 撰写实验报告
五实验机时
2标准学时
实验三 选择结构程序设计
目求
1 掌握Visual C++60集成环境中单步执行
2 熟悉if switch语句格式执行程方法典型案例
3 学会选择结构解决般实际问题编写简单应程序
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证分析程序
1.键盘输入三数判断否构成三角形
分析:
判断b+c>a否成立假设成立定构成三角形假设成立构成三角形判断bc参考程序:
#include
void main()
{
double abct
cout<<请输入a值<
cout<<请输入b值<
cout<<请输入c值<
tbc
if(t<0)
tt
if(b+c>a)
{
if(tcout<<构成三角形<
cout<<构成三角形<
else
cout<<构成三角形<
思考:
l 程序改非嵌套if语句实现
l 程序中增加语句构成三角形情况进步判断三角形类型〔直角钝角锐角三角形〕
提示:三角形类型长边角决定假定三角形长边c角θ两边ab计算公式:
例
c2a2+b2 时直角三角形
c2>a2+b2 时钝角三角形
c2
假设位顾客次购物
① 满1000元九折
② 满2000元八折
③ 满3000元七折
④ 满4000元六折
⑤ 5000元五折
编写程序输入购物款输出实收款
解:例ifelse if语句进行重判断参考程序:
#include
void main()
{
double mp
cout<<输入购物款:
cin>>m
if(m<1000) pm
else if (m<2000)p09*m
else if(m<3000) p08*m
else if(m<4000) p07*m
else if(m<5000) p06*m
else p05*m
cout<<实收款:<
}
3.分段函数:
编程序输入x输出y值
解:程序:
#include
void main()
{
float xy
cout<cin>>x
if (x>0)
if (x>10)
yx*x*x
else
yx*x5
else
yx+1
cout<
运行结果:
Input x: 3
y2
〔二〕完成实验工程
1.设计程序判断键盘输入整数正负性奇偶性
2.编写程序实现函数功:
3.奖金税率:〔a代表奖金r代表税率〕
a<500(元) r0
500≤a<1000 r3
1000≤a<2000 r5
2000≤a<5000 r8
a≥5000 r12
输入奖金数求税率应交税款实奖金数
3.输入某年年份月份计算该月天数
提示
(1)年中月(1月3月5月7月8月10月12月)月天数31天
(2)年中月(4月6月9月11月)月天数30天
(3)2月判断该年年闰年年2月28天闰年2月29天
某年符合面两条件闰年:
①年份400整
②年份4整100整
4.输入面直角坐标系中点坐标值〔xy〕判断该点象限中条坐标轴
四课作业
1 设计计算器实现简单四运算
2 撰写实验报告
五实验机时
2标准学时
实验四 循环结构程序设计
目求
1.掌握循环结构whiledo-whilefor等语句格式执行程方法典型案例
2.学循环结构嵌套
3.掌握分支循环综合程序编写方法
4.学熟悉breakcontinue区
5.学会常数值图形编程方法
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证实验程序
1.计算:S1+2+3+4+…+n
真
假
i≤n
sumsum+i
i++
开始
输入n
sum0
i1
输出sum
结束
图41 求累加流程图
解:
程序流程图图41示程序:
#include
void main()
{
int insum
cout< cin>>n
sum0
i1
while (i
sumsum+i
i++
}
cout<
运行结果:
Input an integer:5
sum15
2.裴波契数列前数112358……规律:
F11 (n1)
F21 (n2)
FnFn1+Fn2 (n≥3)
编写程序求数列前面40数
分析:设两变量f1f2初值f11数列第1项f21数列第2项循环结构求数列前40项次处理两项循环20次进入循环首先输出f1f2然令f1f1+f2求第3项令f2f2+f1注意时f1已第3项求第4项进入次循环时首先输出第34项然述方法求第56项类推求前40项
解:
#include
#include
void main()
{
long int f1f2
int i
f11f21
for (i1i<20i++)
{
cout<
cout<
f2f2+f1
}
}
例中if〞语句作行中输出4数
运行结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
10946 17711 28657 46368
75025 121393 196418 317811
514229 832040 1346269 2178309
3524578 5702887 9227465 14930352
24157817 39088169 63245986 102334155
3.求出100~200间素数输出时行印五素数
分析:判断数a否素数需整2~〔取整〕果整a素数
解:
#include
#include
#include
void main(void)
{
int akin
n0
for (a100a<200a++)
{
ksqrt(a)
for (i2i
break
if (i>k) 假设i>ki素数
{
cout<
if (n50)
cout<
}
cout<
程序运行输出:
101 103 107 109 113
127 131 137 139 149
151 157 163 167 173
179 181 191 193 197
199
4.编写程序公式计算e似值直项定精度
分析:累加求问题仔细分析项发现第二项开始项值前项序号n:
解:
#include
void main()
{
double e 10x 10yz
int n1
cout<< input 精度:
cin>>z
y1x
while(y>z)
{
x*n
y1x
e+y
++n
}
cout<
思考:
l 程序中while结构改写do-while观察程序运行结果
l 增加continue〞break〞语句程序输入数001时显示精度求太低请重新输入〞提示
5.兔子第3月起月生兔子兔子第3月起月生兔子假设兔子死编程序计算月兔子少?〔求20月〕
分析:第3月开始月兔子数月兔子数月兔子数样出该序列规律:第3项开始该项值前两项
兔子数目规律:
1123581321……
解:
#include
void main( )
{
int f1f2f3
int i
f1f21
for(i3i<20i++)
{ A
f3f1+f2
cout< f1f2
f2f3
}
}
思考:
l 程序A行中改写for(i20i>3i)〞观察程序运行结果
l 画出例流程图
6.编写程序印图42示蝶形图形
分析:图形称结构3~3整数标识行号i行字符B〞数表示6*|i|+1行字符B〞前空格数着|i|增减少空格数0
解:
BBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBB
BBBBBBBBB
BBB
BBBBBBBBB
BBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBB
图42 蝶形
# include
void main()
{
int ijkd
for(i3i<3i++)
{
cout<
if (i<0) di
for (j1j<103*dj++)
cout<<
for (k1k<6*d+3k++)
cout< }
cout<
思考:
l 程序中for(j1j<103*dj++)〞for(j1j<303*dj++)〞改写观察程序运行结果
l 程序中for(i3i<3i++)〞for(i10i<10i++)〞改写观察程序运行结果
l 程序中for (k1k<6*d+3k++)〞for (k1k<10*d+3k++)〞改写观察程序运行结果
7.dowhile结构修改while结构分观察输出结果
#include
void main()
{
int a0 A
do
{
a++
cout< } while(a>1)
}
思考:
l 条件while(a>1)改while(a)分观察输出结果
l A语句改a10while(a>1)改while(a)计算循环执行次数
8.键盘输入意整数〔999结束标志〕计算中正数
分析:采转语句breakcontinue实现break循环体中退出层循环continue结束次循环
解:
#include
void main()
{
int xs0
while(1)
{
cin>>x
if (x999) break A
if (x<0) continue B
ss+x
}
cout<}
思考:
l 交换A行B行位置观察程序运行结果
l 修改程序输入意整数〔999结束标志〕〞直包含20正数时〞计算正数
〔二〕完成实验工程
1.编程序印图43示数字金字塔:
图43 数字金字塔
2.输入行字符分统计出中英文字母空格数字字符字符单词数
3.设数列前四项0025项分前四项编程求数列前20项
4.求π似值公式:
中n123…设计程序求出n1000时π似值
5.求出1~599中3整少位数字5整数1551513均满足条件整数
四课作业
1 设100元钱买100支笔中钢笔支3元圆珠笔支2元铅笔支05元问钢笔圆珠笔铅笔买少支〔种笔少买1支〕?
2 撰写实验报告
五实验机时
2标准学时
实验五 数组
目求
1 掌握维数组二维数组字符数组定义初始化赋值数组元素引方法
2 掌握求值均值排序方法序数组查找增加删编程方法
3 初步掌握字符串处理函数方法字符串复制连接测长等程序编写方法
4 掌握数组典型应
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证实验程序
1.应维数组10数进行泡排序序输出
分析:n数泡排序方法第数面数逐进行拟发现者进行交换完成数放第位置第二数面数逐进行拟发现者进行交换完成次数放第二位置循环直第n1数第n数进行拟发现者进行交换
解:
#include
void main()
{
int a[10] A
int ijt
cout<<输入数:<
{
cout< cin>>a[i]
}
for(i0i<8i++)
{
for(ji+1j<9j++)
{
if(a[i]{
ta[i]
a[i]a[j]
a[j]t
}
}
}
cout<<排序结果:<
思考:
l A行改程序段:
int n
cin>>n
int a[n]〞
观察运行结果?分析原
l B行改for(i1i<10i++)〞观察现象
2.应二维数组印图51示杨辉三角形
分析:杨辉三角形出行数存规律:行数数行序相行第数数均1中间数行列数前列数
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
图51 杨辉三角形
解:
#include
void main()
{
int y[5][5]
int ijn5
for(i0i
y[i][i]1
y[i][0]1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
图52 杨辉三角形
}
for(i2i
for(j1j
}
cout<<杨辉三角形<
cout<<
for(j0j
}
思考:
l 添加语句输出图52示杨辉三角形
3.键盘输入两字符串连接成字符串
分析:建立两变量ij先i指字符数组str1第元素然移动i指str1末尾指str1元素\0’j指字符数组str2第元素然str2中元素分赋str1中相应位置元素直str2结束止j指str2元素\0’str1末尾添加结束标志\0’
程序:
解:
#include
void main(void)
{
char str1[40]str2[20] 定义字符数组str1str2
int ij
cout<<输入二字符串:
cingetline(str120) 输入字符串1str1中
cingetline(str220) 输入字符串2str2中
i0 i指str1第元素
while (str1[i]'\0') 判断str1否结束
i++ str1没结束i指元素
j0 j指str2第元素
while (str2[j]'\0') 判断str2否结束
{
str1[i]str2[j] str2没结束str2[j]赋str1[i]
i++ i指str1元素
j++ j指str2 元素
}
str1[i]'\0' str1末尾添加结束标志\0’
cout<
4.编程序输入字符串删空格输出
分析:逐读取字符假设空格面字符字符串结束标志前移位该位置开始重复述操作直字符串结束
解:
#include
void main()
{
char str[]This is a book A
int i0j
while(str[i]NULL)
{
if(str[i]' ')
{ B
ji
while(str[j]NULL)
{
str[j]str[j+1]
j++
}
}
i++
}
cout<
思考:
l 程序中A行〞'〞改写观察现象
l 程序中B行'〞〞改写观察现象
l 程序中C行改写:
for(j1str[j]NULLj++cout<
l 编程序输入字符串中出现字符空格外序输出〔字符输出次〕
〔二〕完成实验工程
1.编程实现十进制整数M转换D进制数
2.int a[20]数组编程值偶数元素移数组前端值奇数元素移数组端〔求元素拟移动次数量少〕
3.求中n≥20
4.某班10学生进行数学〞语文〞英语〞C++语言〞等科目考试编写程序:
〔1〕 考试成绩输入二维数组
〔2〕 求门课均成绩门课格学生数门课高分低分
〔3〕 求学生均成绩总分格门数
〔4〕 学生均成绩排序输出
5.设计程序印杨辉三角形〔方法〕
6.编写程序实现strstr1+str2操作处运算符+〞表示二字符串str1str2连接成字符串str键盘二字符串输入字符数组str1str2中连接字符串存放字符数组str中输出连接字符串str
四课作业
1 设ABCm行n列矩阵设计矩阵加法程序完成CA+B操作mndefine定义常量值户定义
2 已次序排序数组现输入数求折半查找法找出该数数组中位置
3 撰写实验报告
五实验机时
4标准学时
实验六 函数调
目求
1.解函数定义方法理解函数调
2.初步掌握函数递嵌套调
3.解函数调实参形参传递参数默认值设置
4.学解重载函数联函数根概念
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证实验程序
1.编写函数递方法求1+2+3+4+…+n值函数中进行输入输出
解:
#include
int fun(int n)
{
int z
if(n<0)
z0
else
zn+fun(n1)
return(z)
}
void main(void)
{
int xsum
cout<<请输入X值<
sumfun(x)
cout<<求结果:<
运行结果:
请输入X值
10
求结果:55
2.编写程序输入mn(n>m)求值
分析:
根公式定义函数计算阶通函数调求出值
解:
阶函数定义:
double fact(int k)
{
int p1
if((k0)||(k1))
return p
else
{
for(int i1i
return p
}
}
完整参考程序:
#include
double fact(int)
void main()
{
int mn
double c
cout<
cout<
if (n
}
c fact(n)( fact(m)* fact(nm))
cout<
double fact(int k)
{
int p1
if((k0)||(k1))
return p
else
{
for(int i1i
}
}
思考:
l 分输入n013m012测试程序
l 试静态存储变量设计阶函数
3.编写程序求两然数mn公约数公倍数
分析:
公约数时整mn正整数欧里德算法〔称辗转相法〕求解应欧里德算法计算两数公约数方法:求两数〔mn〕相余数r(rmn m>n)余数零时m取n值n取r值求两数相余数反复进行直余数零数n公约数
公倍数m×n/公约数
解:
#include
int fun1(int cint d)
{
int r
rcd
while(r0)
{
cd
dr
rcd
}
return d
}
void main()
{
int mned
cout<
efun1(mn)
dm*ne
cout<< 公约数:<
思考:
l 输入两数m36n24观察程序运行结果
l 递调方法实现程序编写参考程序:
# include
int fun1(int cint d)
{
int r
rcd
if(r0)
{
cd
dr
fun1(cd)
}
return d
}
void main()
{
int mned
cout<
efun1(mn)
dm*ne
cout<< 公约数:<
l 编写计算三数公约数程序
4.分输入整数半径实数半径函数重载计算圆面积
分析:参数圆半径类型参数实现重载
解:程序
#include
#define PI 314
int area(int)
float area(float)
void main()
{
int r1
cout<<输入整型半径r:
cin>>r1
cout< float r2
cout<<输入实型半径r:
cin>>r2
cout<}
int area(int x)
{
return PI*x*x
}
float area(float x)
{
return PI*x*x
}
思考:
l 编写重载函数实现两整型数三整型数两实型数三实型数等求值
5.联函数计算长方形面积
分析:C++编译器调遇联函数方会函数体中代码换函数
解:
完整联函数参考程序:
#include
float s(float xfloat y)
void main()
{
float ab
cout< cin>>a>>b
cout<}
inline float s(float xfloat y)
{
return x*y
}
思考:
l 程序中联函数进行代码换机运行观察结果
〔二〕完成实验工程
1.编写函数求:
2.函数调方法印九九表法
3.函数递方法计算xn阶勒德项式值已调语句p(nx)〞编写poly函数递公式:
4.
x初始值314159/4牛顿法求解方程似解求精确牛顿法:
5.5学生4门课成绩求函数分调函数实现:
(1) 〔1〕 找出门课成绩高学生序号
(2) 〔2〕 找出课程格学生序号门课全部成绩
(3) 〔3〕 求门课程均分数输出
(4) 〔4〕 学生总分排序
6.设计函数Fri〔int Mint n〕功M围成圈编号1—M第1号开始报数报n倍数离开直数直剩1求编号
四课作业
1 定义子函数:
sum(int xint y)
{
return x+y
}
编写程序调语句sum()sum(4)sum(57)分带默认参数值函数sum进行调sum函数声明:sum(int x1int y2)
2 撰写实验报告
五实验机时
2标准学时
实验七 指针引
目求
1 掌握指针指针变量指针常量根概念
2 掌握指针数组指针函数关系应
3 初步掌握引概念简单应
二实验设备分组
1 Windows2000操作系统
2 Visual C++60语言环境
3 台PC机
三容步骤
〔〕验证实验程序
1.指针变量加减加n减n运算假设数组a首址1000
解:
# include
void main( )
{
int a[5]{01234}
int *p
p&a[0] p指a[0]p1000
p++ p指元素a[1]p1004
cout<< *p<<'\t' 输出a[1]容1
pp+3 p指3元素a[4]p1016
cout<< *p<<'\t' 输出a[4]容4
p―― p指元素a[3]p1012
cout<< *p<<'\t' 输出a[3]容3
pp―3 p指3元素a[0]p1000
cout<< *p<<'\t' 输出a[0]容0
}
运行结果:
1 4 3 0
2.指出程序错误
#include
void exchange(intint)
void main()
{
int ab
cin>>a>>b
cout<
cout<
void exchange(int xint y)
{
int t
tx
xy
yt
}
分析:例目子函数中交换两变量值函数中函数数传值调方式实参数值传递形参实参形参存中占址单元改变形参值改变实参值想通改变形参值改变实参值应指针调引调引调取代指针调势
图71 通指针实现数交换
解:
指针调:
#include
void exchange(int*int*)
void main()
{
int ab*p1&a*p2&b
cin>>a>>b
cout<
cout<
void exchange(int *xint *y)
{
int t
t*x
*x*y
*yt
}
引调:
#include
void exchange(int&int&)
void main()
{
int ab
cin>>a>>b
cout<
cout<
void exchange(int &xint &y)
{
int t
txxyyt
}
3.指针变量输出二维数组元素值
解:
# include
void main( )
{
int a[3][3]{{123}{456}{789}}
int *p&a[0][0] 二维数组首址赋指针变量p
for (int i0i<9i++)
{
cout<<*p<<'\t' 输出二维数组中第i元素值
p++ 指针变量p加1指元素
}
}
运行结果:
1 2 3 4 5 6 7 8 9
4.指针数组作函数参数四种方法求整型数组值
解:
#include
int max1( int a[ ]int n) 形参数组名
{
int imaxa[0]
for (i1i
maxa[i]
return max
}
int max2( int *pint n) 形参指针
{
int imax*(p+0)
for (i1i
max*(p+i)
return max
}
int max3( int a[ ]int n) 形参数组名
{
int imax*(a+0)
for (i1i
max*(a+i)
return max
}
int max4(int *pint n) 形参指针
{
int imaxp[0]
for (i1i
maxp[i]
return max
}
void main( void)
{
int b[ ]{132546}*pi
cout<
cout<
cout<
运行结果:
max16
max26
max36
max46
5.变量数组元素址赋指针指针加减整数两指针指数组元素时进行减运算结果间数组元素数
解:
#include
void main()
{
int ia[10]
int *p1*p2
p1a A
p2p1+5
for (i0i<9i++)
{
a[i]i*i
cout< }
cout< cout<
思考:
l 程序中A行改p1&a[0]〞观察程序运行结果
l 程序中B行改cout<<*a<<*a<
分析:函数指针通指针赋值分调函数
解:
#include
int sum1(int)
int sum2(int)
void main()
{
int a
int (*f)(int) A
cout< cin>>a
if(a20)
{
fsum1
cout<<(*f)(a)<
else
{
fsum2
cout<<(*f)(a)<
}
int sum1(int m)
{
int s10
for(int i2i
return s1
}
int sum2(int n)
{
int s20
for(int i1i
return s2
}
思考:
l A行改int (*f)(int)〞观察现象
l 分输出两函数函数名观察址值
7.输入两字符串第二字符串拼接第字符串尾部然输出拼接字符串
解:
# include
# include
char *stringcat(char * p1char *p2)
{
char *pp1 目标串首址赋指针变量p
while(*p1++) 指针p1移s1串尾
p1――
while (*p1++*p2++) 源串s2中字符次复制目标串s1中
return p 返回指目标串首址指针p
}
void main(void)
{
char s1[200]s2[100]
cout<<输入第字符串:
cingetline( s1100)
cout<<输入第二字符串:
cingetline( s2100)
cout<<拼接字符串:
cout<
运行结果:
输入第字符串:ABCD
输入第二字符串:EFGH
拼接字符串:ABCDEFGH
8.定义函数实现字符串拷贝
分析:字符串允许进行赋值运算头文件stringh中定义strcpy()库函数例求编制定义函数实现strcpy()库函数功
解:
#include
char *mycopy(char*const char*)
void main()
{
char s1[]I am a student
char s2[20]
mycopy(s2s1)
cout<
char *mycopy(char *toconst char *from)
{
char *tempto
for(*to++*from++)
return temp
}
l 定义函数改程序段:
char *mycopy(char *toconst char *from)
{
char *tempto
for(int i0*(from+i)'\0'i++)
*(to+i)*(from+i)
*(to+i)'\0'
return temp
}
观察现象
l 定义函数声明改:char *mycopy(const char*const char*)〞
定义函数相应改:
char *mycopy(const char *toconst char *from)
{
char *tempto
for(*to++*from++)
return temp
}
观察现象
l 定义函数中否语句*from'a'〞
9.编程判定字符字符串中出现次数果该字符出现返回0
分析:逐读取字符串中字符字符字符串中字符相时计数器count值加1继续查找直字符串尾
解:完整参考程序:
#include
char_count(char *schar letter)
{
int count0
while(*s)
if(*s++letter)
count++
return (count)
}
void main()
{
char str[100]c
cout< cin>>str
cout<< input a letter
cin>>c
cout<
思考:
l 修改程序输出字符出现次数允许字符重复输出
10.指针实现字符串拷贝
解:
# include
# include
void main( )
{
char *p1I am a student
char s1[30]s2[30]
strcpy( s1p1) 命令拷贝字符串
char *p2s2 数组s2首址赋p2
for (*p2++*p1++) 指针拷贝字符串
cout<
运行结果:
s1 I am a student
s2 I am a student
11.newdelete创立动态堆栈
分析:newdelete运算符数组结构体进行动态存分配释放
解:
#include
struct Stack
{
int stacksize
long *buffer
long *sp
} p
void ini(int size)
{
pstacksizesize
psppbuffernew long[size]
}
void del()
{
delete pbuffer
}
void push(long data)
{
if(psp>pbuffer+pstacksize)
cerr<
{
*psp++data
cout<}
}
long pop()
{
if(psp
cerr<
}
return *psp
}
void main()
{
ini(5) A
push(1234)
push(5678)
push(1357)
push(2468)
cout<
}
思考:
l 程序中A行分改ini(2)〞ini(8)〞观察程序运行结果
12.指指针指针输出计算机课程名
分析:指指针指针变量二级指针指变量指针指指针指针二维数组字符数组处理程
解:
#include
char *name[]{Visual BasicVisual C++DelphiPower BuildVisual Foxpro}
void main()
{
char **p name
for(int i0i<5i++)
cout<<*(p+i)<
思考:
l A行修改cout<<**(p+i)<
int a[3]{123}
int *b[3]{&a[0]&a[1]&a[2]}
int **pb
修改程序输出a数组元素b数组元素
〔二〕完成实验工程
1.面程序中调findmax()函数该函数寻找数组中元素该元素标通参数返回返回址值编程实现findmax()函数
# include < iostreamh >
int * findmax(int * array int size int * index)
void main ( )
{
int a[10] {33915467823785631968}
int * maxaddr
int idx
maxaddr findmax(a sizeof(a)sizeof( * a) &idx)
cout<
2.读程序
〔1〕 改写传递引参数
〔2〕 findmax()函数改写成非递函数〔重新考虑参数数〕
# include < iostreamh>
const size 10
void findmax(int* a int n int i int * pk)
void main ( )
{
int a[size]
int n 0
cout << 请输入 << size << 数:
for(int i0 i< size i++)
cin >> a[i]
findmax(a size0 &n)
cout <<值 << a[n] << endl
<<标 << n << endl
}
void findmax(int * a int n int i int * pk)
{
if(i
if(a[i] >a[*pk])
*pk i
findmax(ani+1&(*pk))
}
}
3.编制程序输入行字符加密解密加密时字符次反复加4962873中数字果范围超ASCII码032(空格)~122('z')进行模运算解密加密序相反编制加密解密函数印程结果
例加密:the result Of 3 and 2 is not 8
密文:xqkzlvyuzwm#7>gpl'sryvvwA
4.编制程序调传递引参数 实现两字符串变量交换例开始:
char* aphello
char* bphow are you
交换结果apbp指容分:
ap: how are you
bp: hello
5.指针变量编写字符串处理函数:
〔1〕字符串拼接函数Strcat
〔2〕字符串拟函数Strcmp
〔3〕取字符串长度函数Strlen
6.指针数组作函数参数面四种情况数组float a[10]进行降序排序:
〔1〕函数实参数组名形参数组
〔2〕函数实参数组名形参指针变量
〔3〕函数实参指针变量形参数组
〔4〕函数实参指针变量形参指针变量
四课作业
撰写实验报告
五实验机时
4标准学时
实验八 结构体链表
目求
1 掌握结构体类型结构体变量根概念
2 掌握结构体指针结构体数组应
3 掌握链表根概念
4 掌握链表根操作应包括建立链表遍历链表插入结点删结点查找结点等
二实验设备分组
1. Windows2000操作系统
2. Visual C++60语言环境
3. 台PC机
三容步骤
〔〕验证实验程序
1.三种方式定义职工学生日期等结构体变量
解:
# include
# include
struct employee 定义职工结构体数类型
{
int no 职工编号
char name[8] 职工姓名
char addr[40] 家庭址
}
struct student 定义学生结构体数类型
{
int no 学号
float engphymathave 英语数学物理成绩均成绩
} stu1stu2 定义结构体时定义结构体变量stu1stu2
void main ()
{
employee emp1emp2 定义employ 类型结构体变量emp1emp2
struct
{
int yearmonthday
} date1date2 直接定义日期结构体类型变量
emp1no100 赋职工号
strcpy ( emp1name zhang sa) 赋职工姓名
strcpy( emp1addr Nanging) 赋家庭址
emp2emp1 职工emp1信息赋emp2
cout<
stu1eng90 输入成绩
stu1phy95
stu1math100
cout<