牛顿迭代法解方根Word格式.docx

上传人:b****6 文档编号:21193865 上传时间:2023-01-28 格式:DOCX 页数:13 大小:53.19KB
下载 相关 举报
牛顿迭代法解方根Word格式.docx_第1页
第1页 / 共13页
牛顿迭代法解方根Word格式.docx_第2页
第2页 / 共13页
牛顿迭代法解方根Word格式.docx_第3页
第3页 / 共13页
牛顿迭代法解方根Word格式.docx_第4页
第4页 / 共13页
牛顿迭代法解方根Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

牛顿迭代法解方根Word格式.docx

《牛顿迭代法解方根Word格式.docx》由会员分享,可在线阅读,更多相关《牛顿迭代法解方根Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

牛顿迭代法解方根Word格式.docx

第3章详细设计6

3.1实现概要设计中定义的所有数据类型6

3.2对主程序和主要模块的实现写出伪码算法6

3.3详细定义、说明主要函数和过程的输入输出参数和功能9

3.4程序的流程图9

第4章调试分析11

4.1调试过程中遇到的问题及解决办法11

4.2改进设想11

4.3经验和体会11

第5章用户使用说明12

第6章测试结果13

参考文献15

附录(程序清单)16

第1章需求分析

1.1输入的形式和输入值的范围

输入数据类型为整型,将一批整型数据输入到一维数组中。

输入值的范围是1~10之间的整数,采取逐个输入的形式进行输入。

1.2输出的形式

输出数据类型为整型,采用双重for循环将按要求排列后所得到的二维数组输出。

1.3程序实现的功能

可以对给定的一个含有1~10十个整数的一维数组,从中选择某9个填到一个3*3方格中,并且要求满足方格中所有相邻的两个整数之和是素数。

能够将满足条件的二维数组输出。

第2章概要设计

2.1主要数据结构和数据类型的定义描述

2.1.1主要数据结构

数组是本程序用到的数据结构。

2.1.2主要数据类型的定义描述

本程序用到的数组类型是一维数组和二维数组,用到的基本数据类型是整型。

定义了四个整型的循环变量i,j,p,m进行循环控制,定义变量sum用于累加。

2.2主要算法思想和算法描述

2.2.1主要算法思想

利用循环将1~10十个整数中的某9个整数按规律逐个填入到3*3方格中,直至将方格填满,并使其满足所有相邻的两个整数之和为素数。

2.2.2主要算法描述

定义判断素数的子函数isprime,在主函数中利用循环将二维数组b[i][j]初始化,即将b[i][j]赋值为0,然后将a[0]赋予b[1][1],将该位置的0覆盖,然后以a[0]为中心,按要求选填剩余9个数中的4个,首先利用循环语句将与a[0]相加是素数的整数选出,并置于另一个已经定义的一维数组d[10]中,然后再利用循环将一维数组d[10]中的整数赋予二维数组中的奇数位。

之后利用循环从剩余的5个整数中选出可以满足条件的4个整数,然后按要求填入到剩余方格中将初始值0覆盖。

最后将满足要求的二维数组输出。

2.2.3程序模块之间的层次和调用关系

程序模块之间的层次和调用关系如图2.1所示。

图2.1程序模块之间的层次和调用关系

第3章详细设计

3.1实现概要设计中定义的所有数据类型

概要设计中定义的所有数据类型有:

整型数组:

a[10],d[10],b[3][3]

整型变量:

i,j,m,p,sum

3.2对主程序和主要模块的实现写出伪码算法

函数isprime(定义未知整型变量m)

{

定义循环变量i;

if(m=1或者m为偶数)

返回0;

if(m=2)

返回1;

for(i=3;

i*i<

m;

m++)

if(m%i=0)

否则返回1;

}

主函数main()

定义整型变量i,j,m,p,h;

for(i=0;

i<

3;

i++)

for(j=0;

j<

j++)

将二维数组b[i][j]初始化

b[i][j]=0;

for(m=0;

m<

输入1~10十个整数a[m];

b[1][1]=a[0];

调用函数isprime;

if(isprime(a[0]+a[m]))

{

将与a[0]相加是素数的整数赋予d[p];

[p]=a[m];

a[m]=0;

p++;

}

if((i+j)%2!

=0)

将d[p]中的整数赋予b[i][j];

b[i][j]=d[p];

排除不满足条件的整数;

if(a[m]%2==0)

a[m]=0;

while(a[m]!

=0&

&

b[i][j]==0)

{

b[i][j]=a[m];

m++;

h=b[2][0];

b[2][0]=b[2][2];

b[2][2]=h;

for(i=0;

j++)

输出结果;

结束程序

3.3详细定义、说明主要函数和过程的输入输出参数和功能

主函数中利用for循环语句实现了数组值的输入,并按要求选填1~10十个整数的9个。

自定义函数的功能是判断一个整数是否为素数。

3.4程序的流程图

主函数流程图如图2.2所示

图2.2主函数

判断素数子函数流程图如图2.3所示。

图2.3判断素数子函数流程图

第4章调试分析

4.1调试过程中遇到的问题及解决办法

调试过程中遇到了一些问题:

1.在不该加分号的地方加分号,例如:

在if条件句的后面加了分号。

2.该用复合语句是忘记写花括号{}。

3.定义空间不够,出现数组越界操作。

4.在定义子函数时,在主函数内部定义函数。

5.变量未定义就使用。

6.函数调用时实参个数多于形参个数。

解决方法:

通过编译后的错误提示找出错误并改正。

4.2改进设想

编译的时检查到语法错误,进行修改。

利用单步跟踪,找出出现逻辑错误的部分,进行修改。

4.3经验和体会

1.在调用函数时,一定要保证实参个数和形参个数相同。

22.在给数组申请空间时,尽量多申请些,防止出现越界现象。

3.在使用复合语句时一定不要忘记使用{}。

4.在if条件句的后面不能加了分号,以防止其成为空语句。

5.在使用变量是要保证前面已经定义。

第5章用户使用说明

1、运行VC++程序。

2.、在运行界面下按要求输入1~10十个整数,存入到一个一维数组中,每输入一个数据后按空格再输入下一个数据。

3、当10个数据都输入结束后按回车键,数据输入结束。

4、运行界面上会显示出运行结果。

5、按任意键,程序结束。

第6章测试结果

Pleaseinputthedata:

1~10

输入待填入3*3方格的数据:

1,2,3,4,5,6,7,8,9,10

将1~10十个整数填入方格的中间过程:

1二维数组b[3][3]初始化,赋值为0.即b[i][j]=0;

即b[3][3]={0,0,0,0,0,0,0,0,0};

2.利用循环赋值:

a]10]={1,2,3,4,5,6,7,8,9,10};

3.b[1][1]=a[0];

a[0]=0;

标示a[0]已经被填入方格;

4b[1][1]=1;

5.b[3][3]={0,0,0,1,0,0,0,0,0}

6.利用循环将与a[0]相加是素数的整数a[m]赋值于d[10],d[10]={2,4,6,10};

a[m]=0;

7.a[10]={0,0,3,0,5,0,7,8,9,0}

8.利用循环找i与j相加是奇数的方格位置即:

b[0][1],b[1][0],b[1][2],b[2][1];

9.利用循环将d[10]中的整数赋予b[0][1],b[1][0],b[1][2],b[2][1];

10.b[3][3]={0,2,0,4,1,6,0,10,0};

11.利用循环在剩余的5个数中找出与b[0][1],b[1][0],b[1][2],b[2][1];

相加均不为素数的整数,赋值为0;

表示该数不可选填,即a[7]=0;

12.a[10]={0,0,3,0,5,0,7,0,9,0}

13.在条件a[m]!

=0的情况下,利用循环将满足b[0][0]位置的整数选填,并使a[m]=0;

14a[10]={0,0,0,0,5,0,7,0,9,0}

15b[3][3]={3,2,0,4,1,6,0,10,0};

16在条件a[m]!

=0的情况下,将利用循环将满足b[0][2]位置的整数选填,并使a[m]=0;

17a[10]={0,0,0,0,0,0,7,0,9,0}

18b[3][3]={3,2,5,4,1,6,0,10,0};

19在条件a[m]!

=0的情况下,将利用循环将满足b[2][0]位置的整数选填,并使a[m]=0;

20a[10]={0,0,0,0,0,0,7,0,9,0}

21b[3][3]={3,2,5,4,1,6,7,10,0};

22在条件a[m]!

=0的情况下,将剩余的唯一整数填入b[2][2]的位置

23b[2][2]=9,

24b[3][3]={0,2,0,4,1,6,7,10,9};

25不合理

26定义中间变量h,将b[2][2]和b[2][2]位置的整数调换

27h=b[2][2];

b[2][2]=b[2][0];

b[2][0]=h

28b[3][3]={3,2,5,4,1,6,9,10,7};

29利用循环(i=0;

30换行

31利用循环(j=0;

32输出结果:

33325

34416

359107

36Pressanykeytocontinue

参考文献

[1]谭浩强主编,卜家岐,范燮昌编著.C语言程序设计[M].北京:

高等教育出版社,2006

[2]张磊.C语言程序设计[M].京:

高等教育出版社,2005

[3]张长海.C语言程序设计[M].北京:

高等教育出版社2006

[4]谭浩强.C语言程序设计(第三版)[M].北京:

清华大学出版社2006

附录(程序清单)

#include<

stdio.h>

intisprime(intm)//判断是否为素数

inti;

if(m==1||m%2==0)

return0;

if(m==2)

return1;

for(i=3;

=m;

i+=2)

if(m%i==0)

return0;

}

voidmain()

inti,j,m,p=0,k=0;

intsum=0;

intd[10],a[10],b[3][3];

for(i=0;

for(j=0;

b[i][j]=0;

//数组初始化

printf("

pleaseinputthedata\n"

);

//提示输入数据

10;

scanf("

%d"

&

a[m]);

//存放数据

b[1][1]=a[0];

for(m=1;

{

if(isprime(a[0]+a[m]))//判断与a[0]相加是否为素数

{

d[p]=a[m];

//存放与其相加为素数的数

a[m]=0;

p++;

sum++;

//计算与a[0]相加为素数的个数

}//if(isprime)

}

p=0;

while(p<

sum)

for(j=0;

if((i+j)%2!

{

b[i][j]=d[p];

p++;

}

a[m]=0;

for(m=1;

if(a[m]!

for(i=0;

j++)

if(((i+j)%2==0)&

(i*j!

=1))

b[i][j]=a[m];

if((!

isprime(b[0][0]+b[0][1]))&

(!

isprime(b[0][0]+b[1][0])));

isprime(b[0][2]+b[0][1]))&

(!

isprime(b[0][2]+b[1][2])));

if((!

isprime(b[2][0]+b[2][1]))&

isprime(b[2][0]+b[1][0])));

isprime(b[2][2]+b[2][1]))&

isprime(b[2][2]+b[1][2])));

m++;

}

{

%3d"

b[i][j]);

printf("

\n"

}

课程设计总结:

这次课程设计总共用了两周的时间,通过这次课程设计我感到自己学到了很多知识。

不仅巩固了自己在课堂上学的东西,而且收获很多在过去半年中没学过知识,自己对于C语言了解也加深了。

在这次课程设计中,对自定义函数的运用有了很深的了解,对for循环的运用也变得顺畅,我的程序题目是字数最少的,但自我感觉却是最难做的!

在这两周中我进了很多次图书馆,看了很多与专业相关的书籍,它们帮助我很多很多。

我的程序题目很难,按照最初的设计思想,最佳的方法应该是运用回溯法,考虑到大一学生专业科目知识的欠缺,老师给我的题目降低了难度。

虽然降低了难度,相比来说,仍然挺难。

正是因为这个题目有难度,我才能有机会更好的锻炼自己。

由于自己知识的欠缺,在这两周内我不仅翻阅了大量的书籍,还向大二大三的学长学姐请教了相关知识。

从学长学姐那里,我学到了在过去半年中没有学到的知识。

从这次课程设计中我领略到:

题目越难,收获才会越多。

这次程序我加强自己的动手能力,改掉了自己眼高手低的毛病,收获很多。

通过这次课程设计,自己的实际编程能力有了进一步的锻炼,也有了一定程度的提高。

而且加强了自己如何进行编译,修改错误和单步跟踪检查等的能力。

更加强了自己编程的能力。

指导教师评语:

指导教师(签字):

年月日

课程设计成绩

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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