多项式乘法的实现
辽宁工程技术大学
《C语言程序设计》
题目多项式乘法(加法减法)的实现_____
指导教师: 刘辉 姓名: 赵星林 学号: 1426640140
班级:
专业:
多项式加法减法乘法的实现
一, 内容
要求:已知如下两个多项式
P(x)=pm-1x+ pm-2x+...+p1x+p0 Q(x)=qn-1x+qn-2x+...+q1x+q0
m2
n1
n2
m1
编程求他们的加减乘结果
本系统主要实现两个多项式的加减乘运算,利用数组的特点实现次数小于100的多项式的加减乘运算,主要思想是让数组的下表随多项式指数同事变化,读者只需输入多项式指数所对应的系数就可输出他所要得到的多项式了。
二,上机环境
操作系统:Windows 2007
开发工具:C与C++程序设计学习与实验系统 2012
三,函数调用关系图
四,各函数功能说明
1,main()……………………………………………………主函数; 2,void input()………………………………………..输入函数; 3,void output()……………………………………..输出函数; 4,void menu(void)………………………………..菜单函数;
5,system(“cls”)........................................................................................................清屏函数; 6,system(“pause”)...................................................................................................暂停函数; 7,void muity(int a[],int m,int b[],int n,int c[])................多项式相乘函数;
8,void add(int a[],int m,int b[],int n,int c[])..................多项式相加函数; 9,void sub(int a[],int m,int b[],int n,int c[])..................多项式相减函数。
五,算法描述或流程图
六,程序运行效果图
输入 第一组 3
P(X)的系数: 3 1 3 第二组 3 Q(X)的系数: -2 -1 2
运行结果截图:
七,总结
第十八周是青岛理工大学计算机工程学院大一年级的课程设设计周,这是很多人人生当中的第一次课程设计,本以为自己所学到的东西对于课设很有信心,可是当我拿到题目是才知道我是多么的幼稚,对于课设要求中大多数题目都是很陌生的,不知道如何下手,我做的是一道数学程序题----多项式相乘,听起来很好听,但是做来实在不易啊,起初我怎么都不会想到能用数组做,于是我就用结构体和链表做,但是当做到多项式合并同类项是我就被卡住了,想不到怎么下手,我准备星期二去问问老师,第二天老师给我的回答让我很惊讶,她说你的题其实很简单,没必要用链表做,用数组完全就够了,我说用数组我实在想不起怎么去做,他就给我讲了一下原理,此时我还想着我昨天的功夫不就白费了吗,这又要重新开始了,怀着对数组的好奇我就开始做了起来,花了一天的时间终于做出来了,当时真的很高心,不过又看了看周围同学的课设,我就没那么高兴了,说实话他们的程序真的很难,注定这是一个让我们大一过得最有意义的一周了,其实大多说C程序的让我在这一周有复习了一遍,又增加了我对C的理解,同事伴随着对他的新欢有增加了些。
用数组编程多项式的乘法也有很多缺点;比如:多现实的指数不好控制,用数组还要占大量的内存,使得整个程序华而不实,我感觉还是用链表做比较好,指数和系数任由自己输入,所占的内存又可以随时释放,对计算机的内存要求不高,看来真的得加深对结构体和链表的理解,并且深入了解了。 这周课设从中获得了很多,加深了对数组的理解,同时对系统函数又有了更多的理解又见识了很多,也从同学程序中获得了很多新的知识。 期待下次课设!!!
八,参考文献
邱建华. C语言程序设计教程. 东软电子出版社
谭浩强.C程序设计(第三版).清华大学出版社,2005
九,程序清单
#include
printf(
printf(
printf(
printf(
printf(
}
void input(int y[],int x) {
int i;
for(i=0;i
scanf(
void output(int a[],int x) {
int i,sum=0; for(i=0;i
if(a[i]>0) {
if(i!=0) printf(
if(i==1) {
if(a[i]==1) printf(
printf(
else if(a[i]==1) printf(
else if(i==0)
printf(
else if(a[i]
printf(
if(i>1) {
if(a[i]==-1)
printf(
}
else if(i==1) {
if(a[i]==-1) printf(
else if(i==0) {
printf(
else
printf(
continue; }
for(i=0;i
sum+=a[i]; }
if(sum==0) printf(
void muity(int a[],int m,int b[],int n,int c[]) {
int i,j; for(i=0;i
for(i = 0; i
c[i+j]=a[i]*b[j]+c[i+j]; } }
void add(int a[],int m,int b[],int n,int c[]) {
int i,max; max=m>n?m:n; for(i=0;i
for(i=0;i
c[i]=a[i]+b[i]; } }
void sub(int a[],int m,int b[],int n,int c[]) {
int i,max; max=m>n?m:n; for(i=0;i
for(i=0;i
int main() {
int m,n,max,t,w,i; int o=1;
int P1[N],P2[N],P3[N]; int index;
for (index = 0; index
P1[index] = 0; P2[index] = 0; }
printf(
scanf(
printf(
printf(
printf(
printf(
printf(
scanf(
printf(
printf(
printf(
printf(
while(scanf(
switch(t) { case 1:
add(P1,m,P2,n,P3); printf(
output(P3,max); printf(
printf(
printf(
printf(
sub(P1,m,P2,n,P3); printf(
output(P3,max); printf(
else if(w==2) {
sub(P2,n,P1,m,P3); printf(
printf(
printf(
printf(
break; case 3:
muity(P1,m,P2,n,P3); printf(
printf(
break; case 0:
system(
printf(
printf(
break; } } }