文档库 最新最全的文档下载
当前位置:文档库 › 数值实验题程序设计报告

数值实验题程序设计报告

数值实验题程序设计报告
数值实验题程序设计报告

2015~2016学年华中科技大学研究生课程《数值分析》课程报告

数值实验题程序设计报告

院系:电气与电子工程学院

专业:__ 电气工程_

任课教师:___************* __

学生姓名:__ _**************_

学号:*********** _

电话:__ ************

二○一六年五月

目 录

1 数值实验题1 ................................................................................................................................ 1 1.1 实验1.1病态问题 ..................................................................................................................... 1 1.2问题提出 ..................................................................................................................................... 1 1.3实验内容 ..................................................................................................................................... 1 1.4实验要求 ..................................................................................................................................... 1 1.5实验过程 ..................................................................................................................................... 2 1.5.1当选用19x ε时ess 的变化结果 .............................................................................................. 2 1.5.2当选用18x ε时ess 的变化结果 .............................................................................................. 5 1.6实验程序 ..................................................................................................................................... 8 2 数值实验题2 ................................................................................................................................ 9 2.1实验2.1 多项式插值的振荡现象 ............................................................................................. 9 2.2问题提出 ..................................................................................................................................... 9 2.3实验内容 ..................................................................................................................................... 9 2.4实验要求 ..................................................................................................................................... 9 2.5实验过程 ................................................................................................................................... 10 2.5.1当取f(x)时的实验结果 ......................................................................................................... 10 2.5.2当取h(x)时的实验结果 ........................................................................................................ 13 2.5.3当取g(x)时的实验结果 ........................................................................................................ 17 2.6实验程序 ................................................................................................................................... 20 3数值实验题3 ............................................................................................................................... 21 3.1实验内容 ................................................................................................................................... 21 3.2实验要求 ................................................................................................................................... 21 3.3实验过程 ................................................................................................................................... 21 3.4实验程序 ................................................................................................................................... 22 4数值实验题4 ............................................................................................................................... 23 4.1实验目的 ................................................................................................................................... 23 4.2实验题目 ................................................................................................................................... 23 4.3实验要求 ................................................................................................................................... 23 4.4实验计算过程 ........................................................................................................................... 24 4.4.1采用复化梯形余项公式时,步长h 的计算 ........................................................................ 24 4.4.2采用复化Simpson 余项公式时,步长h 的计算 ................................................................ 24 4.4.3采用复化Gauss-Legendre Ⅰ形公式,步长h 的计算 ......................................................... 24 4.5在MA TLAB 下采用三种复化形公式的实验结果 ................................................................ 24 4.5.1采用复化梯形公式的实验结果 ............................................................................................ 24 4.5.2采用复化Simpson 形公式的实验结果 ................................................................................ 25 4.5.3采用复化Gauss-Legendre Ⅰ形公式的实验结果 ................................................................. 25 4.6实验结果分析 ........................................................................................................................... 26 4.7实验程序 .. (26)

1 数值实验题1

1.1 实验1.1病态问题

实验目的:算法有“优”与“劣”之分,问题也有“好”和“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。

数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价,如耗用更多的机器时间、占用更多的存储空间等。

1.2问题提出

考虑一个高次的代数多项式

20

1

(x)(x 1)(x 2)

(x 20)(x k),i p ==---=-∏ (E.1.1)

显然该多项式的全部根为1,2,…,20,,共计20个,且每个根都是单重的(也称为简

单的),现考虑该多项式的一个扰动 19

(x)0,p x ε+= (E.1.2) 其中,ε是一个非常小的数。这相当于是对方程(E.1.1)中19x 的系数作一个小的扰动。比较方程(E.1.1)和方程(E.1.2)根的差别,从而分析方程(E.1.1)的解对扰动的敏感性。

1.3实验内容

为了实验方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。

(a)u roots =

其中,若变量a 存储(n+1)维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,n a a a +,则输出u 的各分量是多项式方程

11210n n n n a x a x a x a -+++

++=

的全部根,而函数

(v)b poly =

的输出b 是一个(n+1)维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。

(1,21);ve zeros =

(2)ess;ve =

(poly(1:20)ve).roots +

上述简单的Matlab 程序便得到方程(E.1.2)的全部根,程序中"ess"即是(E.1.2)中的ε

1.4实验要求

(1)选择充分小的ess 反复进行上述实验,记录结果的变化并进行分析。如果扰动项的系数ε很小,我们自然感觉方程(E.1.1)和方程(E.1.2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?

(2)将方程(E.1.2)中的扰动项改成18x ε或其他形式,实验中又有怎样的现象出现?

1.5实验过程

1.5.1当选用19x ε时ess 的变化结果

(1)当选用19x ε时,ess 从0、0.00001、0.00005、0.0001、0.0005、0.001、0.005、0.01、0.05、0.1、0.5、1时,所得实验结果如下: t_charpt1_1

对扰动项19加扰动0得到的全部根为: 20.0003 18.9972 18.0112 16.9711 16.0483 14.9354 14.0653 12.9491 12.0334 10.984 10.0061 8.99839 8.00028 6.99997 6 5 4 3 2 1

>> t_charpt1_1

对扰动项19加扰动1e-05得到的全部根为: 22.5961+2.3083i 22.5961-2.3083i 18.8972+5.00563i 18.8972-5.00563i 14.9123+4.95848i 14.9123-4.95848i 12.0289+3.73551i 12.0289-3.73551i 10.059+2.33021i 10.059-2.33021i 8.63829+1.05641i 8.63829-1.05641i 7.70894+0i 7.02801+0i

5.99942+0i 5.00001+0i 4+0i 3+0i 2+0i 1+0i >> t_charpt1_1

对扰动项19加扰动5e-05得到的全部根为: 23.8181+3.00656i 23.8181-3.00656i 19.1747+6.21504i 19.1747-6.21504i 14.6418+5.88103i 14.6418-5.88103i 11.6375+4.34245i 11.6375-4.34245i 9.69262+2.74569i 9.69262-2.74569i 8.32566+1.36609i 8.32566-1.36609i 7.21097+0.165748i 7.21097-0.165748i 5.99712+0i 5.00003+0i 4+0i 3+0i 2+0i 1+0i >> t_charpt1_1

对扰动项19加扰动0.0001得到的全部根为: 24.4447+3.37436i 24.4447-3.37436i 19.2849+6.80828i 19.2849-6.80828i 14.4937+6.29978i 14.4937-6.29978i 11.4483+4.60422i 11.4483-4.60422i

9.52361+2.92023i

9.52361-2.92023i

8.18506+1.49491i

8.18506-1.49491i

7.12254+0.321995i

7.12254-0.321995i

5.99432+0i

5.00006+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.0005得到的全部根为: 26.1859+4.4493i

26.1859-4.4493i

19.4861+8.38755i

19.4861-8.38755i

14.0577+7.31715i

14.0577-7.31715i

10.9567+5.2065i

10.9567-5.2065i

9.10466+3.31175i

9.10466-3.31175i

7.84491+1.78143i

7.84491-1.78143i

6.8767+0.56314i

6.8767-0.56314i

5.97383+0i

5.00031+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.001得到的全部根为: 27.0817+5.03812i

27.0817-5.03812i

19.5337+9.1664i

19.5337-9.1664i

13.8235+7.77167i

13.8235-7.77167i

10.7211+5.4609i

10.7211-5.4609i 8.91282+3.47317i

8.91282-3.47317i

7.69268+1.89884i

7.69268-1.89884i

6.75761+0.654702i

6.75761-0.654702i

5.95208+0i

5.00061+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.005得到的全部根为: 29.5873+6.83652i

29.5873-6.83652i

19.4854+11.2382i

19.4854-11.2382i

13.1507+8.84996i

13.1507-8.84996i

10.1162+6.03078i

10.1162-6.03078i

8.44148+3.82721i

8.44148-3.82721i

7.32676+2.15573i

7.32676-2.15573i

6.46665+0.860285i

6.46665-0.860285i

5.84301+0i

5.00309+0i

3.99999+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.01得到的全部根为: 30.8853+7.86593i

30.8853-7.86593i

19.3654+12.2526i

19.3654-12.2526i

12.7983+9.31692i

12.7983-9.31692i

9.83019+6.26377i

9.83019-6.26377i

8.22775+3.96936i

8.22775-3.96936i

7.16417+2.25903i

7.16417-2.25903i

6.33873+0.945308i

6.33873-0.945308i

5.76415+0i

5.00627+0i

3.99998+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.05得到的全部根为: 34.5342+11.1798i

34.5342-11.1798i

18.7297+14.8984i

18.7297-14.8984i

11.8166+10.3768i

11.8166-10.3768i

9.10803+6.76427i

9.10803-6.76427i

7.70853+4.27124i

7.70853-4.27124i

6.77645+2.48012i

6.77645-2.48012i

6.03817+1.13011i

6.03817-1.13011i

5.49013+0i

5.03659+0i

3.99989+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.1得到的全部根为: 36.4232+13.18i

36.4232-13.18i

18.2486+16.1526i

18.2486-16.1526i

11.3192+10.81i

11.3192-10.81i

8.773+6.95838i

8.773-6.95838i 7.47593+4.38779i

7.47593-4.38779i

6.60562+2.56677i

6.60562-2.56677i

5.90709+1.20368i

5.90709-1.20368i

5.29123+0i

5.10369+0i

3.99978+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动0.5得到的全部根为: 41.6228+20.0495i

41.6228-20.0495i

16.4581+19.2319i

16.4581-19.2319i

9.98819+11.7151i

9.98819-11.7151i

7.94528+7.34711i

7.94528-7.34711i

6.91849+4.62342i

6.91849-4.62342i

6.20189+2.74667i

6.20189-2.74667i

5.59937+1.36032i

5.59937-1.36032i

5.01648+0.299336i

5.01648-0.299336i

3.99891+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项19加扰动1得到的全部根为: 44.1662+24.4655i

44.1662-24.4655i

15.3308+20.5637i

15.3308-20.5637i

9.34248+12.0446i

9.34248-12.0446i

7.57027+7.48405i

7.57027-7.48405i

6.67233+4.70876i 6.67233-4.70876i 6.02566+2.81462i 6.02566-2.81462i 5.46579+1.42161i 5.46579-1.42161i

4.9275+0.362154i 4.9275-0.362154i 3.99784+0i 3+0i 2+0i 1+0i

(2)实验结果分析:当ess 从0不断增大到1时,p(x)方程的根的数值越来越大,逐渐偏离

20

1

(x)(x 1)(x 2)

(x 20)(x k)i p ==---=-∏多项式的精确解,也就是说随着扰动数值的增

加,使得方程根的绝对误差越来越大。

1.5.2当选用18x ε时ess 的变化结果

(1)当选用18x ε时,ess 从0、0.00001、0.00005、0.0001、0.0005、0.001、0.005、0.01、0.05、0.1、0.5、1时,所得实验结果如下: t_charpt1_1

对扰动项18加扰动0得到的全部根为: 20.0003 18.9972 18.0112 16.9711 16.0483 14.9354 14.0653 12.9491 12.0334 10.984 10.0061 8.99839 8.00028 6.99997 6 5 4 3 2 1

>> t_charpt1_1

对扰动项18加扰动1e-05得到的全部根为: 20.9941+1.34421i 20.9941-1.34421i 18.4909+3.24043i 18.4909-3.24043i 15.3108+3.559i

15.3108-3.559i 12.6116+2.8272i 12.6116-2.8272i 10.5793+1.73149i 10.5793-1.73149i 9.04319+0.627188i 9.04319-0.627188i 7.93688+0i 7.00367+0i 5.9999+0i 5+0i 4+0i 3+0i 2+0i 1+0i >> t_charpt1_1

对扰动项18加扰动5e-05得到的全部根为: 21.7395+1.76462i 21.7395-1.76462i 18.7905+4.10569i 18.7905-4.10569i 15.2015+4.37125i 15.2015-4.37125i 12.331+3.43922i 12.331-3.43922i 10.2714+2.17818i 10.2714-2.17818i 8.76563+0.96434i 8.76563-0.96434i

7.78183+0i

7.01929+0i

5.99952+0i

5.00001+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.0001得到的全部根为:

22.1231+1.97119i

22.1231-1.97119i

18.9301+4.52168i

18.9301-4.52168i

15.1388+4.74427i

15.1388-4.74427i

12.194+3.70877i

12.194-3.70877i

10.1281+2.36959i

10.1281-2.36959i

8.6372+1.10755i

8.6372-1.10755i

7.65669+0i

7.04171+0i

5.99904+0i

5.00001+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.0005得到的全部根为:

23.1837+2.53319i

23.1837-2.53319i

19.2722+5.61216i

19.2722-5.61216i

14.9442+5.66829i

14.9442-5.66829i

11.8325+4.34555i

11.8325-4.34555i

9.7682+2.80861i

9.7682-2.80861i 8.32371+1.43218i

8.32371-1.43218i

7.17799+0.255323i

7.17799-0.255323i

5.99522+0i

5.00006+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.001得到的全部根为: 23.724+2.8203i

23.724-2.8203i

19.4236+6.14475i

19.4236-6.14475i

14.8344+6.09209i

14.8344-6.09209i

11.6561+4.62319i

11.6561-4.62319i

9.60113+2.9943i

9.60113-2.9943i

8.1821+1.56759i

8.1821-1.56759i

7.0834+0.388288i

7.0834-0.388288i

5.99064+0i

5.00012+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.005得到的全部根为: 25.2126+3.6299i

25.2126-3.6299i

19.7675+7.56069i

19.7675-7.56069i

14.5012+7.13688i

14.5012-7.13688i

11.1924+5.27031i

11.1924-5.27031i

9.18407+3.41403i

9.18407-3.41403i

7.83795+1.86985i

7.83795-1.86985i

6.82468+0.629226i

6.82468-0.629226i

5.95872+0i

5.00061+0i

4+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.01得到的全部根为: 25.9713+4.05715i

25.9713-4.05715i

19.9036+8.2604i

19.9036-8.2604i

14.317+7.61228i

14.317-7.61228i

10.9676+5.54777i

10.9676-5.54777i

8.99167+3.58851i

8.99167-3.58851i

7.68325+1.99414i

7.68325-1.99414i

6.70159+0.72518i

6.70159-0.72518i

5.92688+0i

5.00122+0i

3.99999+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.05得到的全部根为: 28.0714+5.30337i

28.0714-5.30337i

20.1528+10.1377i

20.1528-10.1377i

13.7705+8.76841i

13.7705-8.76841i

10.3818+6.18038i

10.3818-6.18038i

8.51514+3.97458i

8.51514-3.97458i 7.30967+2.26698i

7.30967-2.26698i

6.40434+0.940976i

6.40434-0.940976i

5.78242+0i

5.00626+0i

3.99997+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.1得到的全部根为: 29.1493+5.98286i

29.1493-5.98286i

20.2125+11.071i

20.2125-11.071i

13.4752+9.28466i

13.4752-9.28466i

10.1007+6.44431i

10.1007-6.44431i

8.29727+4.13106i

8.29727-4.13106i

7.14293+2.37702i

7.14293-2.37702i

6.27379+1.02957i

6.27379-1.02957i

5.68401+0i

5.01294+0i

3.99995+0i

3+0i

2+0i

1+0i

>> t_charpt1_1

对扰动项18加扰动0.5得到的全部根为: 32.1625+8.03901i

32.1625-8.03901i

20.1576+13.5784i

20.1576-13.5784i

12.6213+10.505i

12.6213-10.505i

9.37859+7.02492i

9.37859-7.02492i

7.76338+4.46668i

7.76338-4.46668i

6.74346+2.61315i 6.74346-2.61315i 5.96572+1.22155i 5.96572-1.22155i 5.31571+0i 5.0994+0i 3.99973+0i 3+0i 2+0i 1+0i >> t_charpt1_1 对扰动项18加扰动1得到的全部根为:

33.726+9.20171i 33.726-9.20171i 20.0119+14.8203i 20.0119-14.8203i 12.1719+11.0297i 12.1719-11.0297i 9.03762+7.25643i 9.03762-7.25643i 7.52214+4.59761i 7.52214-4.59761i 6.56666+2.70586i 6.56666-2.70586i 5.83089+1.29796i 5.83089-1.29796i 5.13323+0.183663i

5.13323-0.183663i 3.99945+0i 3+0i 2+0i 1+0i

(2)实验结果分析:当 从0不断增大到1时,p(x)方程的根的数值越来越大,逐渐偏离

20

1

(x)(x 1)(x 2)

(x 20)(x k)i p ==---=-∏多项式的精确解,同样也出现了随着扰动数值

的增加,使得方程根的绝对误差越来越大的现象。但是当18x ε时,p(x)方程的根的数值解比19x ε时的相对要小,这说明随着扰动项多项式的次数下降,p(x)多项式的解偏离精确解的程度越小,数值解越来越精确。

1.6实验程序

function t_charpt1_1

%数值实验1.1 变态问题

%输入:[0 20]之间的扰动项及小的扰动常数 %输出:加扰动后得到的全部根

result=inputdlg({'请输入扰动项:在[0 20]之间的整数:'},'charpt1_1',1,{'18'}); Numb=str2num(char(result)); if((Numb>20)|(Numb<0))

errordlg('请输入正确的扰动项:[0 20]之间的整数!'); return; end

result=inputdlg({'请输入(0 1)间的扰动常数:'},'charpt1_1',1,{'0.00001'}); ess=str2num(char(result)); ve=zeros(1,21); ve(21-Numb)=ess;

root=roots(poly(1:20)+ve);

disp(['对扰动项',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']); disp(num2str(root));

2 数值实验题2

2.1实验2.1 多项式插值的振荡现象 2.2问题提出

考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项的次数增加时,(x)n L 是否也更加靠近被逼近的函数。Runge 给出的一个例子是极著名并富有启发性的。设区间[-1,1]上函数

2

1

(x)125f x =

+

2.3实验内容

考虑区间[-1,1]的一个等距划分,分点为

21,0,1,2

,,i i x i n n

=-+

=

则拉格朗日插值多项式为

201

(x)(x)125n

n i

i i

L l x ==+∑

其中,(x),i 0,1,2

,i l n =,其中n 是n 次Lagrange 插值基函数。

2.4实验要求

(1)选择不断增大的分点数目2,3,,n =画出原函数发f(x)及插值多项式函数(x)n L 在[-1,1]上的图像,比较并分析实验结果。 (2)选择其他的函数,例如定义在区间[-1,1]上的函数

4

(x),(x)arctanx ,1x h g x

=

=+

重复上述的实验看其结果如何。

2.5实验过程

2.5.1当取f(x)时的实验结果

(1)当2

1

(x)125f x

=+时,n=2,3,6,8,10,…,25,30所得实验图像如下:

n=2时,最大误差为: Max[L(x)-f(x)]=0.6462

n=3 时,最大误差为: max[L(X)-f(X)]=0.7070;

x

y =f (x )o a n d y =l n (x )--

-1

-0.8

-0.6

-0.4

-0.2

00.2

0.4

0.6

0.8

1

x

y =f (x )o a n d y =l n (x )--

n=6;max[L(X)-f(X)]=0.6169;

n=10 时; 最大误差为: max[L(X)-f(X)]=1.5956;

-1

-0.8-0.6-0.4-0.2

00.20.40.60.81

x

y =f (x )o a n d y =l n (x )--

-1

-0.8

-0.6

-0.4

-0.2

00.2

0.4

0.6

0.8

1

x

y =f (x )o a n d y =l n (x )--

n=15 时; 最大误差为: max[L(X)-f(X)]=0.7356;

n=25 时; 最大误差为: max[L(X)-f(X)]=4.6156;

-1

-0.8-0.6-0.4-0.2

00.20.40.60.81

x

y =f (x )o a n d y =l n (x )--

-1

-0.8-0.6-0.4-0.2

00.20.40.60.8

1

x

y =f (x )o a n d y =l n (x )--

n=30 时; 最大误差为: max[L(X)-f(X)]=78.3652;

(2)实验结果分析

从图中可以看出当插值节点很少时,插值的误差很大,插值图象与原图象没有很好重叠在一起,而当随着插值的节点增加,中间能很好的重叠,但是两边出现很大误差,随着n 值的增多,总体上分散的越厉害,最大误差也逐渐增加,在n=3时,最大误差为0.6462,但到了n =30时,已经变成了78.3652,这种随着节点数增多依然不能很好的接近被插值函数的现象称为“龙格现象”,亦称为多项式插值的振荡现象。因此通过增加节点数从而提高插值多项式的次数来逼近被插函数是不可取的。

2.5.2当取h(x)时的实验结果

(1)当 4

(x)1x

h x =+时,n=2,3,6,8,…,10,25,所得实验图像如下:

-1

-0.8-0.6-0.4-0.2

00.20.40.60.81

x

y =f (x )o a n d y =l n (x )--

n=2 时;

n=3时; 最大误差为: max[L(X)-h(X)]=0.5772;

-5

-4-3-2-1

012345

x

y =f (x )o a n d y =l n (x )--

-5

-4-3-2-1

012345

x

y =f (x )o a n d y =l n (x )--

n=6时; 最大误差为: max[L(X)-h(X)]=0.5838;

n=10时; 最大误差为: max[L(X)-h(X)]=0.5965;

x

y =f (x )o a n d y =l n (x )--

-5

-4

-3

-2

-1

01

2

3

4

5

x

y =f (x )o a n d y =l n (x )--

n=15时; 最大误差为: max[L(X)-h(X)]=1.4875

n=25时; 最大误差为: max[L(X)-h(X)]=2255.2357

(2)实验结果分析

-5

-4-3-2-1

012345

x

y =f (x )o a n d y =l n (x )--

-5

-4

-3

-2

-1

01

2

3

4

5

x

y =f (x )o a n d y =l n (x )--

从实验图像可以看出随着插值节点数的增加出现异常的摆动,中间能较好的接近原函数,但两边却出现很大的误差。

2.5.3当取g(x)时的实验结果

(1)当(x)arctanx g 时,n=2,3,6,10…,25所得实验图像如下:

n=2时;最大误差为: max[L(X)-g(X)]=1.2357

n=3时;最大误差为: max[L(X)-g(X)]=0.7532

x

y =f (x )o a n d y =l n (x )--

x

y =f (x )o a n d y =l n (x )--

n=6时;最大误差为: max[L(X)-g(X)]=0.3357

n=10时;最大误差为: max[L(X)-g(X)]=0.2855

-5

-4-3-2-1

012345

x

y =f (x )o a n d y =l n (x )--

-5

-4-3-2-1

012345

x

y =f (x )o a n d y =l n (x )--

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

网络程序设计实验报告-Winsock编程接口实验

网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:____验证型实验_____ __ 指导教师:______________________ 专业班级:_____________________ 姓名:_______________________ 学号:_____________________ 电子邮件:____________ 实验地点:______ _______ 实验日期2013 年 3 月29 日 实验成绩:__________________________

一、实验目的 ●掌握Winsock的启动和初始化; ●掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip https://www.wendangku.net/doc/30443570.html, https://www.wendangku.net/doc/30443570.html,,能输出https://www.wendangku.net/doc/30443570.html,和https://www.wendangku.net/doc/30443570.html,对应的IP地址列表。 2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图

三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2.实验结果 3.选择查看本机信息 四、讨论与分析 1.Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

网络编程实验报告

实验一TCP Socket API程序设计 一、预备知识 1.网络编程基本概念 网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。 套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。 图1-1 TCP通信流程 2.TCP通信流程 TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与

服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。 二、实验目的 1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。 三、实验任务 使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。 四、实验环境及工具 1. Windows2000/XP/7 2. Visual C++开发平台 3. Visual Studio2010 五、实验内容和步骤 参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。 连接: void CChatClientDlg::OnConnect() { WSADATA wsd; //WSADATA结构 WSAStartup(MAKEWORD(2,2),&wsd); //加载协议,使用Winsock 2.2版 m_client = socket(AF_INET,SOCK_STREAM,0); //创建流式套接字 //服务器地址 sockaddr_in serveraddr; UpdateData(); if(ServerIP.IsBlank()) { AfxMessageBox("请指定服务器IP!"); return; } if(sPort.IsEmpty()) { AfxMessageBox("请指定端口!"); return; }

Java程序设计实验报告2(弹球游戏)[1]1

《Java语言程序设计》课程设计 实习报告 题目: 班级: 学号: 姓名: 同组人员: 指导老师:张彬

一、实验目的 1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。 2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行 线程的创建、启动等工作。 3、培养独立查找资料,并解决问题的能力。 二、实验任务 1、设计并编程实现弹球游戏: 用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。 鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。 程序需提供计时功能,并最终显示玩家能坚持多少秒。 2、程序要求: (1)具备相应界面,并通过事件编程,实现相应的GUI组件功能。 (2)使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。 (3)实现鼠标与屏幕四周,以及与小球的碰撞检测。 三、开发工具与平台 1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。 2.开发平台:JDK1.5 四、设计思路 1.界面设计 (1)制作一个简单的面板JFrame,文件保存为bollFrame.java 其中为一public的类bollFrame,其构造方法为: bollFrame(int n){ super(); setTitle("我的弹球小游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//得到电脑屏幕大小 setSize(450,450); setLocation((dimension.width-game.getWidth())/2-250, (dimension.height-game.getHeight())/2-250);//设置面板显示基中; this.n = n; myBollPanel = new bollPanel(n);//构造一个画板; add(myBollPanel);//将画板放入JFrame createMenu();//创建菜单; setJMenuBar(bar); } (2)构造画板类,文件保存为bollPanel.java 其构造函数如下: bollPanel(int n){ this.n = n; // executorThread = Executors.newCachedThreadPool();//创建线程池; mouse = new mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程; this.setIsOver(false);//游戏开始线程条件的判断; for(int i =0 ;i

浙江大学Linux程序设计实验报告

Linux程序设计实验报告1 ——操作系统基本命令使用 一、实验目的 1.通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1.学习emacs的使用,要求能新建、编辑、保存一个文本文件 (1)启动emacs (2)输入以下C程序 (3)保存文件为kk.c (4)用emacs打开文件kk.c (5)修改程序 (6)另存为文件aa.txt并退出。 任务2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include int main( ) {

printf(“Hello world!\n”); return 0; } 此时可以用Backspace、→、←、↑、↓键编辑文本。 (3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。 (4)用vi打开文件kk.c,输入命令: [root@localhost root]#vi kk.c (5)修改程序为: #include int main( ) { printf(" Hello world!\n"); printf("*****************\n"); return 0; } (6)按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。。 图1 程序编辑环境 任务3.gedit的使用,要求能新建、编辑、保存一个文本文件 (1)启动gedit,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

实验二M精编B程序设计含实验报告

实验二M精编B程序设 计含实验报告 The following text is amended on 12 November 2020.

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器 (Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 21 421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y

C+程序设计实验报告-2013

C++程序设计 实验报告 专业计算机科学与技术班级 ____________ 学号 ____________ 姓名 ____________ 指导教师 __许加兵_ 信息与电子工程学院2013年9月-12月

C++程序设计实验报告 专业__________班级__________学号__________姓名__________ 成绩____________ 指导教师____________ 日期____________ 实验1 C++集成开发环境与C++函数程序设计 一、实验目的 1、了解和使用Visual Studio 2010的C++集成开发环境; 2、熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、学会完整的C++程序开发过程; 4、学习并掌握C++函数程序设计; 二、实验内容 1、安装、了解和使用Visual Studio 2010的C++集成开发环境; 2、通过以下的C++函数程序设计,熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、通过以下的C++函数程序设计,学会完整的C++程序开发过程; 4、完成以下的C++函数程序设计和调试: 1)编写一个函数print(),将一个整型向量输出到cout。此函数接受两个参数:一个字符串(用于“标记”输出)和一个向量。 2) 编写一个函数,接受一个vector 参数,返回一个vector ,其每个元素值是对应字符串的长度。此函数还找出最长和最短的字符串,以及字典序第一个和最后一个字符串。 三、简要说明C++开发环境安装和配置的过程

《程序设计课程设计》实验报告材料

《程序设计》课程设计 姓名: 学号: 班级:软件工程14 班 指导教师: 成绩:

1.消除类游戏 1.1【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 1.2【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 1.3【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 1.4【功能实现】 #include #include using namespace std;

int main() { int m, n, i ,j; int temp; cin >> n >> m; temp = m; m = n; n = temp; int * map = new int[m * n]; int * mark = new int[m * n]; int * tmap = map; int * tmark = mark; int dif = 0; //输入 for ( i = 0 ; i < m ; i++ ) for (j = 0; j < n; j++) cin >> *(tmap + i * n + j); for (i = 0; i < m; i++) for (j = 0; j < n; j++) { //横行 if ((tmap + 2 - map) % n != 0 || (tmap + 1 - map) % n != 0) if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + 1) = 0; *(tmark + dif + 2) = 0; } //竖列 if (tmap + 2 * n - map < m * n || tmap + n - map < m * n) if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + n) = 0; *(tmark + dif + 2 * n) = 0; } tmap = map + (j+1) + i * n; } //输出 cout << endl; tmap = map; for (i = 0; i < m; i++)

C程序设计上实验报告(完整版)

C语言程序设计上机实验报告 学院:机械工程学院 班级:机自161213 姓名:刘昊 学号:20162181310 实验时间:2017年3月6号 任课老师:张锐

C语言程序设计上机实验报告 实验一 一、实验名称: C程序的运行环境和运行C程序的方法 二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C 程序 三、实验内容: (1). 输入并运行一个简单的C程序。 (2). 设计程序,对给定的两个数求和。 (3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。 四、源程序代码: 代码1: 运行结果1:

程序分析1: 该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for 循环来进行整除过程的简写。 代码2: 运行结果2:

程序分析2: 简单的使用printf()和scanf()函数进行简单的数据运算。代码3: 运行结果3:

程序分析3: 使用if语句进行判断。 五.实验总结 C语言程序设计上机实验报告 实验二 一、实验名称:顺序结构程序设计 二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法, 熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。 三、实验内容: (1). 编写程序,实现小写字母转大写。

(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。 (3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。 (4). 编写程序,实现单字符getchar和putchar输入输出。 (5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。 四、源程序代码 代码1: 运行结果1: 程序分析1:

算法程序设计实验报告

程序设计》课程设计 姓名:王 学号:20100034 班级:软件工程00 班 指导教师:王会青 成绩: 2010年 6 月 实验一.构造可以使n 个城市连接的最小生成树 专业:__软件工程___ 班级:__软件姓名:_王___ 学号:_20100034 完成日期:_2010/6/26 ________ 一、【问题描述】给定一个地区的n 个城市间的距离网,用Prim 算法或Kruskal 算法建立最小生成树,并计算得到的最小生成树的代价。 1 城市间的道路网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道

路,则将相应边的权值设为自己定义的无穷大值。 2 显示出城市间道路网的邻接矩阵。 3 最小生成树中包括的边及其权值,并显示得到的最小生成树的总代价。 4 输入城市数、道路数→输入城市名→输入道路信息→执行Kruskal 算法→执行Prim 算法→输出最小生成树 二、【问题分析】 1. 抽象数据类型结构体数组的定义: #ifnd ef ADJACENCYMATRIXED// 防止该头文件被重复引用 #define ADJACENCYMATRIXED // 而引起的数据重复定义 #define INFINITY 32767 // 最大值∞ #define MAX_VERTEX_NUM 20 // 最大顶点个数 typedef int VRType; // 权值,即边的值 typedef char InfoType; // 附加信息的类型,后面使用时会定义成一个指针 typedef char VertexType[MAX_VERTEX_NUM]; // 顶点类型 typedef enum {DG=1, DN, UDG, UDN} GraphKind; //{ 有向图,有向网,无向图,无向网} typedef struct ArcCell { VRType adj; //VRType 是顶点关系类型。对无权图,用1 或0 表示相邻否;对带权图,则为权值类型。 InfoType*info; // 该弧关系信息的指针

《程序设计实训》实验报告

计算机程序设计实训报告 [“拍飞虫”实验] 专业班级:装控1405,装控1406 实习时间:2015年7月11日至7月15日 实习地点:文理楼124 成员 1: 成员 2:

一、作品概述 本作品运用funcode平台所给模板,在所给源代码的基础上进行编写,对整个游戏进行美化,更换了背景,优化了空格开始键,并且添加了拍蚊子时的音效,以及开始时的欢迎界面,每次游戏结束会对积分进行排序,如果最终得分为满分,则会显示“游戏成功”。 二、功能设计 1.游戏运行,初试界面出现‘空格开始’的提示。 2.玩家按空格开始游戏,界面上出现25只小蚊子和15只大蚊子。 3.游戏开始后,用户每拍一个小蚊子,加两分 4.被淘汰的猴子会出局,加入屏幕下方的淘汰者猴子队列中。 5.站在被淘汰猴子后方的选手依次往前移,填补空白 6.用户继续按空格淘汰猴子,值到剩下唯一的猴子,就是大王!这样,一局游戏完成。 7.一局游戏完成后,屏幕重新出现“空格开始”的标志,用户按空格可以继续游戏,如此往复。 三、功能实现 含每个功能的具体实现,可以用流程图(不要贴代码)等描述。 (说明:主要写用到的各类型的全局变量、含义) 1.g_iMonkeys[6] 用一个int类型的数组来保存猴子精灵编号 2.g_flocation[6] 用一个浮点型数组存储猴子位置(因为6只猴子站成一排,y坐标值是相同的,因此该数组保存6只猴子的x坐标值)。其中g_Monkeys[i] 对应的位置 g_fLocation 3.g_iNumMokeys 当前备选猴子数量,即截图中上层队列的猴子数。 4.g_iNumLoseMonkeys 淘汰的猴子数量,即下层队列中的猴子数。 5.g_iChooseMonkey 本轮淘汰的猴子编号。 6.g_iMoveMonkey 淘汰猴子后,后面需要移动的猴子数。

高级程序设计实验报告

高级程序设计 实验报告 班级 学号: 姓名: 实验名称: 指导老师: 日期:

实验十一文件和流I/O 一、实验题目:文件和流I/O 二、实验内容: 1.掌握磁盘的基本操作 2.掌握目录的基本操作 3.文件的基本操作 4.文本文件的读取和写入 5.字符串的读取和写入 6.二进制文件的读取和写入I 7. 二进制文件的读取和写入2 三、主要程序代码: 1. using System; using System.IO; using System.Collections.Generic; using System.Text; namespace实验1 { class Test { public static void Main() { DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", https://www.wendangku.net/doc/30443570.html,); Console.WriteLine(" File type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine(" Available space to current user:{0, 15} bytes",d.AvailableFreeSpace); Console.WriteLine("Total available space: {0, 15} bytes",d.TotalFreeSpace); Console.WriteLine( " Total size of drive: {0, 15} bytes ", d.TotalSize); } } Console.ReadKey();

相关文档
相关文档 最新文档