当前位置:文档之家› 一元多项式的计算问题-数据结构与算法课程设计报告

一元多项式的计算问题-数据结构与算法课程设计报告

一元多项式的计算问题-数据结构与算法课程设计报告
一元多项式的计算问题-数据结构与算法课程设计报告

合肥学院

计算机科学与技术系

课程设计报告

2009 ~2010 学年第 2 学期

课程数据结构与算法

课程设计名称一元多项式的计算问题

学生姓名周维

学号0804012040

专业班级08计科(2)

指导教师王昆仑教授

2010年6月

题目:(一元多项式的计算问题)要求能够按照指数降序排列建立并输出一元多项式;能够完成两个一元多项式的相加、相减,并将结果输入。

一、问题分析和任务定义

1.问题分析

本程序关键点是如何将输入的两个多项式相加、相减操作。

①如何将输入的一元多项式按指数的降序排列

②如何确定要输入的多项式的项数;

③如何将输入的两个一元多项式显示出来。

④如何将输入的两个一元多项式进行相加操作。

⑤如何将输入的两个一元多项式进行相减操作。

本程序是通过链表实现一元多项式的相加减操作。

2、任务定义

此程序需要完成如下的要求:将多项式按照指数降序排列建立并输出,将两个一元多项式进行相加、相减操作,并将结果输入。

a:输入多项式的项数并建立多项式;

b:输出多项式,输出形式分别为浮点和整数序列,序列按指数升序排列;

c:多项式a和b相加,建立多项式a+b;

d:多项式a和b相减,建立多项式a-b。

e:多项式的输出。

二、数据结构的选择和概要设计:

(1)数据结构的选用

A:基于链表中的节点可以动态生成的特点,以及链表可以灵活的添加或删除节点的数据结构,为了实现任意多项式的加法,减法,因此选择单链表的结构体,它有一个系数,指数,下一个指针3个元属;例如,图1中的两个线性链表分别表示一元多项式

和一元多项式。从图中可见,每个结点表示多项式中的一项。

图1 多项式表的单链存储结构

B:本设计使用了以下数据结构:

t ypedef struct {

float coef; //系数

int expn; //指数

} ElemType;

typedef struct LNode

{

ElemType data;

struct LNode *next;

}LNode;

C:设计本程序需用到九个模块,用到以下九个子函数如下:

1、void Menu()//建立菜单

2、LNode *InitList() // 创建链表

3、void ChaLNode(LNode *L,ElemType x)//插入链表

4、LNode *AddPolyn(LNode *A,LNode *B)//多项式相加

5、void Invert(LNode *L)//逆序输出链表

6、void Print(LNode *L)//输出多项式

7、main()//主程序模块调用链一元多项式的各种基本操作模块。

(2)多项式的输入

先输入多项式的项数,采用尾插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,建立起它的右指针,并用头节点指向它;

(3)两个多项式的加法

“和多项式”链表中的结点无需另生成,而应该从两个多项式的链表中摘取。其运算规则如下:

假设指针A和B分别指向多项式a和多项式b中当前进行比较的某个结点,则比较两个结点中的指数项,有下列3种情况:

①指针A所指结点的指数值<指针B所指结点的指数值,则应摘取A指针所指结点插入到“和多项式”链表中去;

②指针A所指结点的指数值>指针B所指结点的指数值,则应摘取指针A所指结点插入到“和多项式”链表中去;

③指针A所指结点的指数值=指针B所指结点的指数值,则将两个结点中的系数相加,若和数不为零,则修改A所指结点的系数值,同时释放B所指结点;反之,从多项式A的链表中删除相应结点,并释放指针A和B所指结点。例如,由图2中的两个链表表示的多项式相加得到的“和多项式”链表如图2所示,图中的长方框表示已被释放的结点。

图2 相加得到的和多项式

上述多项式的相加过程归并两个有序表的过程极其类似,不同之处仅在于,后者在比较数据元素时只出现两种情况。因此,多项式相加的过程也完全可以利用线性链表的基本操作来完成。

(4)两个多项式的减法

两个多项式的减法实现,依然调用的是多项式加法的函数,只是在调用前,把多项式二的系数全部变为相反数c.coef=-c.coef;,然后多项式一和多项式二相加,这样就实现了多项式的相减。流程图如上。

(5)流程图

(1)在主函数中调用函数进行多项式的输入、输出,运用选择语句来选择加法、减法进行操作,流程图如图3:

图3 主函数流程图

(2)两个多项式相加就是两个多项式中同指数项的对应系数相加,若和不为零,则形成“和多形式”中的一项,所有指数不同的项均直接移位至“和多项式”中,流程图如图4:

图4 两个一元多项式相加

三、详细设计和编码

1、算法思想

(1)输入并建立多项式——InitList()

(2)输入多项式,输出形式为整数序列,这个输入功能在主函数实现

(3)多项式a和b相加,建立多项式a+b,输出相加的多项式——AddPolyn(A,B) (4)多项式a和b相减,建立多项式a-b,相减的功能调用的依然是相加的子函数

2、算法描述:

A:建立多项式链表

多项式单链表可以用尾插法建表来生成。通过从键盘按升幂的次序输入多项式各项的系数和指数

LNode *InitList()//创建链表

{

LNode *L;

L=(LNode*)malloc(sizeof(LNode));

L->next=NULL;

return(L);

}

void ChaLNode(LNode *L,ElemType x)//插入链表函数

{

LNode *s,*p;

s=(LNode*)malloc(sizeof(LNode));

s->data=x;

p=L;

while(p->next)

p=p->next;

s->next=NULL;

p->next=s;

}

B:按照指数降序排列

void Invert(LNode *L)//逆序输出链表

{LNode *p,*q,*r;

p=L->next;

q=p->next;

while(q!=NULL)

{r=q->next;

q->next=p;

p=q;

q=r;

}

L->next->next=NULL;

L->next=p;

}

C:比较

if (a->expn < b->expn){pre=p;

p=p->next;}//如果多项式a的指数小于多项式b的指数,则指针P后移

if (a->expn > b->expn){

pre->next=q;

pre=pre->next;

q=q->next;}//如果多项式a的指数小于多项式b的指数,q后移

这个模块主要是比较两个多项式的指数大小

D、两个一元多项式的相加

while(p&&q)//判断q,p是不是为空,如果不为空则继续往下进行

{

a=p->data.expn;b=q->data.expn;

if(a

{

pre=p;p=p->next;//p后移

}

if(a==b)

{

sum=p->data.coef+q->data.coef;//当a,b相等,即指数相同,则系数相加

if(sum!=0)//判断sum是为0,如果不为0则保留该节点

{

p->data.coef=sum; B=q;

pre=p; p=p->next;

q=q->next;free(B);

}

Else //如果sum为0即系数为0,则删除该节点

{

temp=p;p=p->next;

pre->next=p;free(temp);

B=q;q=q->next;free(B);

}

}

if(a>b)

{

pre->next=q; pre=pre->next;

q=q->next; }}

if(q) //如果q中还有剩余,那么把q中剩余的项加到pre->next中

pre->next=q;

return(A);

}

两个一元多项式相加的法则是:两个多项式中同指数项的对应系数相加,若和不为零,则

形成“和多项式”中的一项;所有指数不同的项均直接移位至“和多项式”中。如果和为零,则删除该节点。

E:输出一个一元多项式

void Print(LNode *L)//输出多项式

{

LNode *p;

p=L->next;

while(p->next)

{

printf("(%fx^%d)+",p->data.coef,p->data.expn);

p=p->next;

}

printf("(%fx^%d)",p->data.coef,p->data.expn);输出最后一项

}

F:一元多项式相减

两个多项式的减法实现,并没有单独的建立一个子函数来实现这个功能,和多项式的相加一样,依然调用的是多项式加法的函数,只是在调用前,把多项式二的系数全部变为相反数c.coef=-c.coef;,然后多项式一和多项式二相加,这样就实现了多项式的相减,开始我建立一个实现多项式减法的子函数,最后为了程序的简洁最后还是改成了调用多项式相加函数

G:逆序输出链表的实现

void Invert(LNode *L)//逆序输出链表

{LNode *p,*q,*r;

p=L->next;

q=p->next;

while(q!=NULL)

{r=q->next;

q->next=p;

p=q;

q=r;

}

L->next->next=NULL;

L->next=p;

}

H、main()主函数

void main()

{LNode *La,*Lb;ElemType c; int a,i,k;

for(;1;){

La=InitList(); Lb= InitList();

Menu();

printf("请选择功能:");scanf("%d",&k);printf("\n");

switch(k){

case 1 :

printf("\t\t===========一元多项式相加===========\t\t");

printf("\n\n\n输入多项式一的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

{

printf("输入多项式一第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(La,c);

}

printf("输入多项式二的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

{

printf("输入多项式二第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(Lb,c);

}

printf("多项式一为:");Print(La);printf("\n");

printf("多项式二为:"); Print(Lb);printf("\n");

printf("多项式和为:");AddPolyn(La,Lb);

Invert(La);Print(La);printf("\n");break;

case 2:

printf("\t\t===========一元多项式相减===========\t\t");

printf("\n\n\n输入多项式一的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);}

for(i=0;i

{

printf("输入多项式一第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(La,c);

}

printf("输入多项式二的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

{

printf("输入多项式二第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

c.coef=-c.coef;ChaLNode(Lb,c);

}

printf("多项式一为:");

Print(La);printf("\n");

printf("多项式二为:"); Print(Lb);printf("\n");

printf("多项式差为:");

AddPolyn(La,Lb);Invert(La);

Print(La);printf("\n");break;

case 0: break;}

if(k==0)break;

printf("\n\n\n");}}

在主函数中调用函数进行多项式的输入、输出,运用选择语句来选择加法、减法进行操作四:上机调试

调试中遇到的问题与解决办法

1、语法错误及修改,编译中出现的语法问题主要在于子函数和变量的定义,括号的配对,关键字和函数名的书写,以及库函数的规范使用,这些问题都可以通过提示,对应的将其解决

2、我通过调试运行后发现,计算完成打印结果后马上就会退出。程序在运行起来以后,没有一个可以让程序暂时停止的地方,比如要求用户输入,或者什么的,程序顺序执行之后就退出了。

3、运行成功后,但是到最后输出结果的时候总是出现错误。通过对算法的分析发现,算法不正确,修改后最终完成了程序的调试。

五:设计体会

在开始看到程序题目的时候以为一元多项式的加减会很简单,可是在课程设计的过程中发现编写程序并不是开始想象的那样简单,在这过程中遇到了难题,比如如何逆序输出链表,经过认真思考和查相关的资料最后解决了这个问题,通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到一个问题,想办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容。编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。直到最终搞清为止。

六、测试结果及其分析

如图6:一元多项式相加输入的项数小于1时出现的结果,运行结果如下:

图6一元多项式相加结果

如图7:一元多项式减法运行结果如下:

图7

一元多项式减法运行结果

如图8:当选择0时退出如图:

图8:当输入有错误时的情况

七、用户使用说明

根据提示选择多项式的加法还是减法1。相加2相减0.退出,比如选1,然后再根据提示输入一个一元多项式的项数。按enter键,按照指数递升的顺序依次输入非零项,例如4个非零项,要输入8个数,有4个指数,4个系数。按enter键,然后就会自动输出刚才输入的两个多项式及相加后的结果,然后还可以继续选择运算。如果退出选择0.

八、参考文献

[1] 王昆仑等编著《数据结构与算法》中国铁道出版社2007年6月第1版

[2] 郑莉等编著的《C++语言程序设计》(第3版)

[3] 谭浩强著《C程序设计》北京:清华大学出版社2005年7月第三版

附录:

源程序

#include "stdio.h"

#include"malloc.h"

typedef struct

{

float coef;

int expn;

}ElemType;

typedef struct LNode

{

ElemType data;

struct LNode *next;

}LNode;

void Menu()

{

printf(" →→→→→\n");

printf(" ↑菜单↓\n");

printf(" ←←←←←\n");

printf(" ★◆★◆★◆★◆★◆★◆★◆★◆★◆★◆★◆★◆★◆★◆\n");

printf(" ◆★\n");

printf(" ★◆\n");

printf(" ◆****************一元多项式的运算****************★\n");

printf(" ★++++++++++◆\n"); printf(" ★+++++请选择功能键+++++◆\n"); printf(" ◆++++++★\n"); printf(" ★+ +◆\n"); printf(" ◆1===============一元多项式相加================ ★\n"); printf(" ◆★\n");

printf(" ★2===============一元多项式相减================◆\n"); printf(" ◆★\n");

printf(" ★0=====================退出==================== ◆\n"); printf(" ◆★\n");

printf(" ★**********************************************◆\n\n\n"); }

LNode *InitList()//创建链表

{

LNode *L;

L=(LNode*)malloc(sizeof(LNode));

L->next=NULL;

return(L);

}

void ChaLNode(LNode *L,ElemType x)//插入链表函数

{

LNode *s,*p;

s=(LNode*)malloc(sizeof(LNode));

s->data=x;

p=L;

while(p->next)

p=p->next;

s->next=NULL;

p->next=s;

}

LNode *AddPolyn(LNode *A,LNode *B)//多项式相加{

LNode *p,*q,*temp,*pre;

float sum;int a,b;

p=A->next;

q=B->next;

pre=A;

free(B);

while(p&&q)

{

a=p->data.expn;b=q->data.expn;

if(a

{

pre=p;

p=p->next;

}

if(a==b)

{

sum=p->data.coef+q->data.coef;

if(sum!=0)

{

p->data.coef=sum;

B=q;

pre=p;

p=p->next;

q=q->next;

free(B);

}

else

{

temp=p;

p=p->next;

pre->next=p;

free(temp);

B=q;

q=q->next;

free(B);

}

}

if(a>b)

{

pre->next=q;

pre=pre->next;

q=q->next;

}

}

if(q)

pre->next=q;

return(A);

}

void Invert(LNode *L)//逆序输出链表

{LNode *p,*q,*r;

p=L->next;

q=p->next;

while(q!=NULL)

{r=q->next;

q->next=p;

p=q;

q=r;

}

L->next->next=NULL;

L->next=p;

}

void Print(LNode *L)//输出多项式

{

LNode *p;

p=L->next;

while(p->next)

{

printf("(%fx^%d)+",p->data.coef,p->data.expn);

p=p->next;

}

printf("(%fx^%d)",p->data.coef,p->data.expn);

}

void main()

{

LNode *La,*Lb;ElemType c;

int a,i,k;

for(;1;){

La=InitList();

Lb= InitList();

Menu();

printf("请选择功能:");

scanf("%d",&k);

printf("\n");

switch(k){

case 1 :

printf("\t\t===========一元多项式相加===========\t\t");

printf("\n\n\n输入多项式一的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

{

printf("输入多项式一第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(La,c);

}

printf("输入多项式二的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

printf("输入多项式二第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(Lb,c);

}

printf("多项式一为:");

Print(La);printf("\n");

printf("多项式二为:");

Print(Lb);printf("\n");

printf("多项式和为:");

AddPolyn(La,Lb);

Invert(La);

Print(La);

printf("\n");break;

case 2:

printf("\t\t===========一元多项式相减===========\t\t");

printf("\n\n\n输入多项式一的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);}

for(i=0;i

{

printf("输入多项式一第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

ChaLNode(La,c);

}

printf("输入多项式二的项数:");

scanf("%d",&a);

if(a<=0){

printf("a不能小于1!\n");

printf("请从新输入多项式一的项数:");

scanf("%d",&a);

} for(i=0;i

{

printf("输入多项式二第%d项系数和指数:",i+1);

scanf("%f%d",&c.coef,&c.expn);

c.coef=-c.coef;

ChaLNode(Lb,c);

printf("多项式一为:");

Print(La);printf("\n");

printf("多项式二为:");

Print(Lb);printf("\n");

printf("多项式差为:");

AddPolyn(La,Lb);

Invert(La);

Print(La);

printf("\n");break;

case 0: break;}

if(k==0)break;

printf("\n\n\n");

}}

顺序链式一元多项式加法、减法、乘法运算的实现

1.1设计内容及要求 1)设计内容 (1)使用顺序存储结构实现多项式加、减、乘运算。 例如: 10321058)(2456+-+-+=x x x x x x f ,x x x x x x g +--+=23451020107)( 求和结果:102220128)()(2356++-+=+x x x x x g x f (2)使用链式存储结构实现多项式加、减、乘运算, 10305100)(1050100+-+=x x x x f ,x x x x x x g 320405150)(10205090+++-= 求和结果:1031040150100)()(102090100++-++=+x x x x x x g x f 2)设计要求 (1)用C 语言编程实现上述实验内容中的结构定义和算法。 (2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch 语句设计如下选择式菜单。 ***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 ********** ******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5): 1.2数据结构设计 根据下面给出的存储结构定义: #define MAXSIZE 20 //定义线性表最大容量

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

数值计算方法课程设计(C语言)

数值计算方法课程设计 姓名 学号 成绩

课程实际报告 实验一:秦九韶算法 题目 用选列主元高斯消去法解线性方程组 ???????=+- =-+-=-+-=--02 02 0 21 34343232121x x x x x x x x x x 算法语言: 利用c 语言的知识编写该算法程序 算法步骤叙述: 秦九昭算法的基思路是v[0]=a[0]*x+a[1] v[i]=v[i-1]*x+a[i+1];利用秦九昭算法计算多项式函数。 程序清单: #include void main() { float a[5],x,sum; int i; printf("presase input the value of x="); scanf("%f",&x); for (i =5;i >=0;i --) { printf("please input the value of a%d=",i); scanf("%f",&a[i]); } sum =a[5];

for(i=5;i>=1;i--) {sum=sum*x+a[i-1]; } printf("f(x)=%f/n",sum); } 输出结果计算:

实验总结: 通过运用C 语言,解决了秦九韶算法手写的复杂。为以后的雪地打下基础。 实验二:用选列主元高斯消去法解线性方程组 题目 用选列主元高斯消去法解线性方程组 ???????=+- =-+-=-+-=--02 0 2 0 21 34343232121x x x x x x x x x x 算法步骤叙述 第一步消元——在增广矩阵(A,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b )做初等行变换使原方程组的第一列元素除了第一行的全变为0; 第二步消元——在增广矩阵(A,b )中第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b )做初等行变换使原方程组的第二列元素除了第一和第二行的全变为0; 第三步消元——在增广矩阵(A,b )中第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第三行交换,再对(A,b )做初等行变换使原方程组的第三列第四行元素为0; 第四,按x4-x3-x2-x1的顺序回代求解出方程组的解,x[n]=b[n]/a[n][n],x[i]=(b[i]-Σa[i][j]x[j])/a[i][i],i=n-1,…,2,1 程序清单: #include #include #define N 4 static double A[N][N] = {-3,-1,0,0,-1,2,-1,0,0,-1,2,-1,0,0,-1,2}; static double B[N]={1,0,0,0};

一元多项式加减乘除运算

中国计量学院实验报告 实验课程:算法与数据结构实验名称:一元二项式班级:学号: 姓名:实验日期: 2013-5-7 一.实验题目: ①创建2个一元多项式 ②实现2个多项式相加 ③实现2个多项式相减 ④实现2个多项式相乘 ⑤实现2个多项式相除 ⑥销毁一元多项式 实验成绩:指导教师:

二.算法说明 ①存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储 空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。 ②加法算法

三.测试结果 四.分析与探讨 实验数据正确,部分代码过于赘余,可以精简。 五.附录:源代码#include<> #include<> #include<> typedef struct Polynomial { float coef; int expn; struct Polynomial *next; }*Polyn,Polynomial; 出多项式a和b\n\t2.多项式相加a+b\n\t3.多项式相减a-b\n"); printf("\t4.多项式相除a*b\n\t5.多项式相除a/b\n\t6.销毁多项式\n"); printf("\t7.退出

\n*********************************** ***********\n"); printf("执行:"); scanf("%d",&flag); switch(flag) { case(1): printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);break; case(2): pc=AddPolyn(pa,pb); printf("多项式a+b:");PrintPolyn(pc); DestroyPolyn(pc);break; case(3): pd=SubtractPolyn(pa,pb); printf("多项式a-b:");PrintPolyn(pd); DestroyPolyn(pd);break; case(4): pf=MultiplyPolyn(pa,pb); printf("多项式a*b:");PrintPolyn(pf); DestroyPolyn(pf);break; case(5): DevicePolyn(pa,pb); break; case(6): DestroyPolyn(pa); DestroyPolyn(pb); printf("成功销毁2个一元二项式\n"); printf("\n接下来要执行的操作:\n1 重新创建2个一元二项式 \n2 退出程序\n"); printf("执行:"); scanf("%d",&i); if(i==1) { // Polyn pa=0,pb=0,pc,pd,pf;//定义各式的头指针,pa与pb在使用前付初值NULL printf("请输入a的项数:"); scanf("%d",&m); pa=CreatePolyn(pa,m);// 建立多项式a printf("请输入b的项

数值计算方法课程设计

重庆邮电大学 数学与应用数学 专业 《数值计算方法》课程设计 姓名: 李金徽 王莹 刘姝楠 班级: 1131001 1131002 1131002 学号: 2010213542 2010213570 2010213571 设计时间: 2012-6-4 指导教师: 朱伟

一、课程设计目的 在科学计算与工程设计中,我们常会遇到求解线性方程组的问题,对于系数矩阵为低阶稠密矩阵的线性方程组,可以用直接法进行消元,而对于系数矩阵为大型稀疏矩阵的情况,直接法就显得比较繁琐,而迭代法比较适用。比较常用的迭代法有Jacobi 迭代与Gauss - seidel 迭代。本文基于两种方法设计算法,并比较他们的优劣。 二、课程设计内容 给出Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组的算法思想和MATLAB 程序实现,并对比分析这两种算法的优劣。 三、问题的分析(含涉及的理论知识、算法等) Jacobi 迭代法 方程组迭代法的基本思想和求根的迭代法思想类似,即对于线性 方程组Ax = b( 其中n n n R b R R A ∈?∈,),即方程组 )1(2211222221211 1212111?? ???? ?=+?++??=+?++=+?++n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 将系数矩阵A 写为 )2(000000 21122 12122 11U L D a a a a a a a a a A n n n n nn --≡??? ?? ? ? ??---- ??????? ??----??????? ??= 若选取D M =,则U L A M N +=-=,方程组)1(转化为等价方程组 b x U L Dx ++=)(

数据结构中实现一元多项式简单计算

数据结构中实现一元多项式简单计算: 设计一个一元多项式简单的计算器。 基本要求: 一元多项式简单计算器的基本功能为: (1)输入并建立多项式; (2)输出多项式; (3)两个多项式相加,建立并输出和多项式; (4)两个多项式相减,建立并输出差多项式; #include #include #define MAX 20 //多项式最多项数 typedef struct//定义存放多项式的数组类型 { float coef; //系数 int exp; //指数 } PolyArray[MAX]; typedef struct pnode//定义单链表结点类型 { float coef; //系数 int exp; //指数 struct pnode *next; } PolyNode; void DispPoly(PolyNode *L) //输出多项式 { PolyNode *p=L->next; while (p!=NULL) { printf("%gX^%d ",p->coef,p->exp); p=p->next; } printf("\n"); } void CreateListR(PolyNode *&L,PolyArray a,int n) //尾插法建表 { PolyNode *s,*r;int i; L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点for (i=0;i

单片机计算器的课程设计报告

目录 一、设计任务和性能指标 (1) 1.1设计任务 (2) 1.2性能指标 (2) 二、设计方案 (2) 3 3 4 5 5 6 6 7 7 20 20 20 20 21 参考文献 (21) 附录1、系统硬件电路图 (22) 附录2、硬件实物图 (23) 附录3、器件清单 (24)

一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要 显 位 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入);

三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

数据结构一元多项式的计算

课程设计成果 学院: 计算机工程学院班级: 13计科一班 学生姓名: 学号: 设计地点(单位): 设计题目:一元多项式的计算 完成日期:年月日 成绩(五级记分制): _________________ 教师签名:_________________________ 目录 1 需求分析 ......................................................................... 错误!未定义书签。 2 概要设计 ......................................................................... 错误!未定义书签。 2.1一元多项式的建立 ............................................................... 错误!未定义书签。 2.2显示一元多项式 ................................................................... 错误!未定义书签。 2.3一元多项式减法运算 ........................................................... 错误!未定义书签。 2.4一元多项式加法运算 ........................................................... 错误!未定义书签。 2.5 设计优缺点.......................................................................... 错误!未定义书签。3详细设计 .......................................................................... 错误!未定义书签。 3.1一元多项式的输入输出流程图........................................... 错误!未定义书签。 3.2一元多项式的加法流程图................................................... 错误!未定义书签。 3.3一元多项式的减法流程图.................................................. 错误!未定义书签。 3.4用户操作函数....................................................................... 错误!未定义书签。4编码 .................................................................................. 错误!未定义书签。5调试分析 .......................................................................... 错误!未定义书签。4测试结果及运行效果...................................................... 错误!未定义书签。5系统开发所用到的技术.................................................. 错误!未定义书签。参考文献 ............................................................................. 错误!未定义书签。附录全部代码................................................................... 错误!未定义书签。

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

C语言一元多项式计算

C语言一元多项式计算集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

#include <> #include <> #include <> #define LEN sizeof(node) //结点构造 typedef struct polynode { int coef; //系数 int exp; //指数 struct polynode *next; }node; node * create(void) { node *h,*r,*s; int c,e; h=(node *)malloc(LEN); r=h; printf("系数:"); scanf("%d",&c); printf("指数:"); scanf("%d",&e); while(c!=0) { s=(node *)malloc(LEN); s->coef=c; s->exp=e; r->next=s; r=s; printf("系数:"); scanf("%d",&c); printf("指数:"); scanf("%d",&e); } r->next=NULL; return(h);

} void polyadd(node *polya, node *polyb) { node *p,*q,*pre,*temp; int sum; p=polya->next; q=polyb->next; pre=polya; while(p!=NULL&&q!=NULL) { if(p->exp>q->exp) { pre->next=p; pre=pre->next; p=p->next; } else if(p->exp==q->exp) { sum=p->coef+q->coef; if(sum!=0) { p->coef=sum; pre->next=p;pre=pre->next;p=p->next; temp=q;q=q->next;free(temp); } else { temp=p->next;free(p);p=temp; temp=q->next;free(q);q=temp; } } else { pre->next=q; pre=pre->next; q=q->next; } } if(p!=NULL) pre->next=p; else pre->next=q; } void print(node * p) {

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

计算方法课程设计

数理学院2014级信息与计算科学 课程设计 姓名:刘金玉 学号: 3141301240 班级: 1402 成绩:

实验要求 1.应用自己熟悉的算法语言编写程序,使之尽可能具有通用性。2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序。(注:在练习本上写,不上交) 3.完成计算后写出实验报告,内容包括:算法步骤叙述,变量说明,程序清单,输出计算结果,结构分析和小结等。(注:具体题目 具体分析,并不是所有的题目的实验报告都包含上述内容!)4.独立完成,如有雷同,一律判为零分! 5.上机期间不允许做其他任何与课程设计无关的事情,否则被发现一次扣10分,被发现三次判为不及格!非特殊情况,不能请 假。旷课3个半天及以上者,直接判为不及格。

目录 一、基本技能训练 (4) 1、误差分析 (4) 2、求解非线性方程 (6) 3、插值 (12) 4、数值积分 (12) 二、提高技能训练 (16) 1、 (16) 2、 (18) 三、本课程设计的心得体会(500字左右) (21)

一、基本技能训练 1、误差分析 实验1.3 求一元二次方程的根 实验目的: 研究误差传播的原因与解决对策。 问题提出:求解一元二次方程20ax bx c ++= 实验内容: 一元二次方程的求根公式为 1,22b x a -+= 用求根公式求解下面两个方程: 2210(1)320(2)1010 x x x x +-=-+= 实验要求: (1) 考察单精度计算结果(与真解对比); (2) 若计算结果与真解相差很大,分析其原因,提出新的算法(如先求1x 再 根据根与系数关系求2x )以改进计算结果。 实验步骤: 方程(1): 根据求根公式,写出程序: format long a=1;b=3;c=-2; x1=((-1)*b+sqrt(b^2-4*a*c))/2*a x2=((-1)*b-sqrt(b^2-4*a*c))/2*a

一元多项式计算问题课程设计

长沙学院课程设计说明书 题目一元多项式计算问题系(部) 计算机系 专业(班级) 10级软件D班 姓名向栋良 学号2010022D08 指导教师邓旭东 起止日期2011.9.4-2011.9.8

课程设计任务书 课程名称:数据结构与算法 设计题目:一元多项式计算问题 已知技术参数和设计要求: 问题描述: 设计一个稀疏多项式简单计算器 基本要求: (1)输入并分别建立多项式A和B (2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列 (3)完成两个多项式的相加、相减,并将结果输出; 测试数据: (1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7 (3) A+B A=x3+x1B=-x3-x1 (4) A+B A=0 B=x7+x5+x3+x1 (5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x 选作内容: (1).多项式在x=1时的运算结果 (2)求多项式A和B的乘积 设计工作量: 40课时 日期节次地点设计方式9月4日(周日)1-4 科1408 讲授内容 9月4日(周日)5-8 科1608 答疑 9月5日(周一)1-4科1408上机调试 9月5日(周一)5-8 科1608 答疑 9月6日(周二)1-4科1408上机调试 9月6日(周二)5-8 科1608 答疑 9月7日(周三)1-4科1408上机调试 9月7日(周三)5-8 科1608 答疑 9月8日(周四)1-4科1608答疑 9月8日(周四)5-8 科1408 答辩

计算机技术综合课程设计报告

计算机技术综合课程设计 设计题目锅炉液位控制系统学生姓名史婷艳 专业班级自动化1302班学号20134460203 指导老师洪镇南 2017年1 月3日

目录 前言 (2) 1 锅炉汽包水位控制对象与控制指标 (4) 1.1锅炉汽包水位的特征 (4) 1.2汽包水位动态特性 (4) 1.2.1汽包水位在给水流量W作用下的动态特性 (4) 1.2.2汽包水位在蒸汽流量D扰动下的动态特性 (5) 1.2.3燃料量B扰动下汽包水位的动态特性 (6) 2. 汽包水位控制方案 (7) 2.1单冲量控制方式 (7) 2.2 双冲量控制方式 (8) 2.3 三冲量控制方式 (9) 3. 三冲量串级PID控制 (11) 3.1 串级PID控制 (11) 3.2 智能整定PID控制 (12) 4 汽包水位模糊控制器设计及仿真 (12) 4.1 输入输出变量 (12) 4.2 隶属度函数 (15) 4.3基于MATLAB/Simulink 环境建立的系统仿真分析 (16) 4.3.1 基于MATLAB/Simulink 的系统模型 (16)

4.3.2 仿真结果分析 (18) 总结与体会 (18) 参考文献 (20) 前言 锅炉是典型的复杂热工系统,目前,中国各种类型的锅炉有几十万台,由于设备分散、管理不善或技术原因,使大多数锅炉难以处于良好工况,增加了锅炉的燃料消耗,降低了效率。同时,锅炉工作过程中各项指标的调节难以建立数学模型,具有非线性、不稳定性、时滞等特点,所以如何改善对锅炉的控制,保证其正常工作,提高效率一直是人们关注的焦点。而汽包液位是锅炉安全、稳定运行的重要指标,保证液位在给定范围内,对于高蒸汽品质、减少设备损耗和运行损耗、确保整个网络安全运行具有要意义。 现代锅炉的特点之一就是蒸发量显著提高,汽包容积相对变小,水位变化速度很快,稍不注意就容易造成汽包满水或者烧成干锅,这都对汽包液位控制系统提出了更高的要求。汽包液位过高,会影响汽包内汽液分离效果,使汽包出口的饱和蒸汽带水增多,蒸汽带水会使汽轮机产生水冲击,引起轴封破损、叶片断裂等事故。同时会使饱和蒸汽中含盐量增高,降低过热蒸汽品质,增加在过热器管壁和汽轮机叶片上的结垢。水位过低,则可能破坏自然循环锅炉汽水循环系统中某些薄弱环节,以致局部水冷管壁被烧坏,严重时会造成爆炸事故。 目前,对汽包液位位控制大多采用常规PID控制方式,从控制方式来看,它们要么系统结构简单成本低,不能有效的控制锅炉汽包“虚假水位”现象,要么能够在一定程度上控制“虚假现象”,系统却过于复杂,成本投入过大。常用的蒸汽锅炉液位调节系统有三种基本结构:单冲量调节系统结构、双冲量调节系统结构、串级三冲量调节系统结

一元多项式计算器

一元多项式计算器 目录 摘要 (1) 1绪论 (1) 2系统分析 (1) 2.1功能需求 (1) 2.2数据需求 (1) 2.3性能需求 (1) 3总体设计 (2) 3.1系统设计方案 (2) 3.2功能模块设计 (2) 4详细设计 (3) 4.1建立多项式 (4) 4.2多项式相加 (4) 4.3多项式相减 (5) 4.4多项式相乘 (5) 4.5计算器主函数 (6) 5调试与测试 (7) 5.1调试 (7) 5.2测试 (8) 6结论 (9) 结束语 (9) 参考文献 (9) 附录1-用户手册 (10) 附录2-源程序 (12)

摘要 随着生活水平的提高,现代科技也日益发达。日常生活中多位计算再所难免,因此设计一个简单计算器可解决许多不必要的麻烦。 开发这样一个程序主要运用了C的结点,链表等方面知识。系统主要实现了多项式的建立,多项式的输入输出,以及多项式加减乘等运算。 报告主要从计算器的程序段,对输入输出数据的要求,计算器的性能,以及总体的设计来介绍此计算器程序的实现过程。 关键词:多项式;链表;结点 1绪论 随着日益发达的科技,计算器已应用于各行各业。设计一个计算器需要运用C中多方面知识,更是以多项式的建立,输入输出,以及结点,链表为主。(扩充) 任务书。。。。。 2系统分析 2.1 功能需求 多项式的建立多项式输入输出多项式加减乘等运算 2.2数据需求 在输入过程中,首先要确定输入的数据,数据不能是字母,只能是数字。不能连续输入数据,必须按要求配以空格输入要计算的数据。 (1) 链节节点数字 (2) 数字 2.3 性能需求 系统必须安全可靠,不会出现无故死机状态,速度不宜过慢。

java课程设计报告计算器

java课程设计报告 计算器 1 2020年4月19日

目录 一、课程设计目的 (5) 二、课程设计任务.................................................................................................... .. (2) 2.1、设计任务 (5) 2.2、课程设计要求: (6) 2.3、需求分析 (6) 三、开发工具与平台.................................................................................................... (3) 3.1、开发工具 (7) 3.2、开发平台 (7) 2 2020年4月19日

四、设计思路.................................................................................................... . (4) 4.1、界面设计.................................................................................................... . (4) 4.2.1、逻辑设计 (8) 4.2.2、程序流程图.................................................................................................... . (5) 4.2.3、主要代码展示及说明 (5) 4.3、程序测试 (18) 五、实验小结 (20) 3 2020年4月19日

一元多项式计算(数据结构课程设计)

一元多项式计算(数据结构课程设计)

一、系统设计 1、算法思想 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应指数相加(减),若其和(差)不为零,则构成“和(差)多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别写到“和(差)多项式”中去。 因为多项式指数最高项以及项数是不确定的,因此采用线性链表的存储结构便于实现一元多项式的运算。为了节省空间,我采用两个链表分别存放多项式a 和多项式b,对于最后计算所得的多项式则利用多项式a进行存储。主要用到了单链表的插入和删除操作。

(1)一元多项式加法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为零的话,用头插法建立一个新的节点。P 的指数小于q的指数的话就应该复制q的节点到多项式中。P的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生。 (2)一元多项式的减法运算 它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就相减;相加的和不为零的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q的节点到多项式中。P的指数大于q的指数的话就应该复制p的节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。 2、概要设计 (1)主函数流程图: (注:a代表第一个一元二次方程,b代表第二个一元二次方程)

编写一个计算器程序课程设计报告-范例

《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX系2017年月 3 日目录 一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.* 六.设计体会: 题目:用Python编写简易计算器程序学号:$ 专业: 班级: 姓名: 指导教师:、

一、设计内容--------------------------------------------- - 2 - 1. 课程设计目的:------------------------------------- - 2 - 2.课程设计任务:-------------------------------------- - 2 - 3.创新要求:------------------------------------------ - 2 - 4.设计要求: ------------------------------------------- - 2 - 二、原理与分析------------------------------------------- - 2 - 1.开发的技术及功能------------------------------------ - 3 - 2.设计思路-------------------------------------------- - 3 - 3.设计效果图------------------------------------------ - 3 - 三、设计过程--------------------------------------------- - 3 - 1. 程序思路:----------------------------------------- - 3 - 2.功能实现:------------------------------------------ - 4 - 1)加减乘除求余以及指数运算------------------------ - 4 - 2)其他运算---------------------------------------- - 4 - 3)主要方法说明------------------------------------ - 6 - 4)程序流程图-------------------------------------- - 6 - 3.算法思路:------------------------------------------ - 7 - 4.数据分析:------------------------------------------ - 8 - 四、设计结果与分析---------------------------------------- - 8 - ⒈运行调试-------------------------------------------- - 8 - 1)进行加减乘除求余以及指数运算-------------------- - 8 - 2)求倒-------------------------------------------- - 9 -

相关主题
文本预览
相关文档 最新文档