C语言 翁凯 c语言多项式加法 ------略去加号看不懂,求助 #include<stdio.h> #define true 1 #define false 0

C语言问题,看不懂,帮忙分析一下_百度知道
C语言问题,看不懂,帮忙分析一下
0&#39; j++)
puts(n[ j ]); j& j&0&#39; ;=0 ;for( j=LEN-1 ;}for( j=0;,&quot#include&
n[1][ j ]=c&#47.h&0&#39;9198& j--)
{c=n[0][ j ]+n[1][ j ]-2 * &#39;;#define LEN 4main(){};8980&10+&#39,c;static char n[2][LEN+1]={&=1;
n[0][ j ]=c%10+&#39;;stdio
提问者采纳
8980&quot第一行 不解释了第二行定义一个宏 在之后的 程序中 LEN就是数字4接下来住函数定义2个int类型的变量i j定义一个静态的二维的字符数字长度5 个数2 给于初始值&9198&和&quot
提问者评价
其他类似问题
为您推荐:
其他2条回答
,n[2][5]for( j=LEN-1 ,&}/#define LEN 4main(){;*将第0行的j下标的字符+第0行的j下标的字符-2 * &#39;/输出数组
puts(n[ j ]);将c对10整+&#39;/;0&#39#include&/0&#39;.h& j& j--)
{c=n[0][ j ]+n[1][ j ]-2 * &#39;0&#39;0&#39;
/10+&#39;9198&/};0&#39;8980&quot,存入 n[0][ j ]
n[1][ j ]=c/ ;将c对10取余+&#39,c,存入 n[1][ j ]
for( j=0;得c */;0&#39;static char n[2][LEN+1]={&
n[0][ j ]=c%10+&#39;=0 ;/定义二维数组; j& j++)//=1;stdio
先简单解释一下:查询一下&0&的ASCII码,替换值做计算,其中需要注意两个j是不同的使用范围,第一个j就在第一个循环里,第二个就只在第二个循环里,第一个循环全执行完才会进第二个循环
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言数据结构用多项式实现链表加法,在线等_百度知道
提问者采纳
#include&stdio.h&&& #include&stdlib.h&&& #include&malloc.h&&&typedef int ElemT/*单项链表的声明*/&& typedef struct PolynNode{&& & // 系数&& & // 指数&& &struct PolynNode *}PolynNode,*PolynL/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/&& /*指数系数一对一对输入*/&& void CreatePolyn(PolynList &L,int n)&& {&&&&&&& &&& PolynList p,q;&& &&& L=(PolynList)malloc(sizeof(PolynNode)); // 生成头结点&& &&& L-&next=NULL;&& &&& q=L;&& &&& printf(&成对输入%d个数据\n&,n);&& &&& for(i=1;i&=n;i++)&& &&& {&& &&&&&&& p=(PolynList)malloc(sizeof(PolynNode));&& &&&&&&& scanf(&%d%d&,&p-&coef,&p-&expn);&&& //指数和系数成对输入&& &&&&&&& q-&next=p;&& &&&&&&& q=q-&&& &&& }&& &&& p-&next=NULL;&& }&&// 初始条件:单链表L已存在&& // 操作结果: 依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败&& void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType))&& {&& &&& PolynList p=L-&&& &&& while(p)&& &&& {&& &&&&&&& vi(p-&coef, p-&expn);&& &&&&&&& if(p-&next)&& &&&&&&& {&& &&&&&&&&&&& printf(& + &);&& //“+”号的输出,最后一项后面没有“+”&& &&&&&&& }&& &&&&&&& p=p-&&& &&& }&& &&& printf(&\n&);&& }&&/*ListTraverse()调用的函数(类型要一致)*/&& void visit(ElemType c, ElemType e)&&& {&& &&& if(c != 0)&& &&& {&& &&&&&&& printf(&%dX^%d&,c,e);&& //格式化输出多项式每一项&& &&& }&& }&&/*&&& 多项式相加,原理:归并&&&&&&& */&& /* 参数:两个已经存在的多项式&&&&&& */&& /* 返回值:归并后新的多项式的头结点 */&&PolynList MergeList(PolynList La, PolynList Lb)&& {&& &&& PolynList pa, pb, pc, Lc;&& &&& pa = La-&n穿敞扁缎壮等憋劝铂滑&& &&& pb = Lb-&&& &&& Lc = pc = La;&& // 用La的头结点作为Lc的头结点&& &&& while(pa&&pb)&& &&& {&& &&&&&&& if(pa-&expn & pb-&expn)&&&&&&&&&& &&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& pc-&next =&&&&&&&&&&&& //如果指数不相等,pc指针连上指数小的结点,&& &&&&&&&&&&& pc =&& &&&&&&&&&&& pa = pa-&&&&&&&&&&&&& //指向该结点的指针后移&& &&&&&&& }&& &&&&&&& else if (pa -&expn & pb-&expn )&&&&&& &&&&&&& {&& &&&&&&&&&&& pc-&next =&&&&&&&&&&&&&& //pc指针连上指数小的结点,&& &&&&&&&&&&& pc =&& &&&&&&&&&&& pb = pb-&&&&&&&&&&&&&&& //指向该结点的指针后移&& &&&&&&& }&& &&&&&&& else&& //(pa -&expn = pb-&expn )&& &&&&&&& {&& &&&&&&&&&&& pa-&coef = pa-&coef + pb-&&&&& //指数相等时,系数相加&& &&&&&&&&&&& pc-&next =&& &&&&&&&&&&& pc =&& &&&&&&&&&&& pa = pa-&&&&&&&&&&&&& //两指针都往后移&& &&&&&&&&&&& pb = pb-&&& &&&&&&& }&& &&& }&&&&& pc-&next = pa ? pa:& // 插入剩余段&& &&& &&& return Lc;&&}&&&&&int main()&& {&& &&& PolynList ha,hb,&& &&& printf(&非递减输入多项式ha, &);&& &&& CreatePolyn(ha,5);&& // 正位序输入n个元素的值&& &&& printf(&非递减输入多项式hb, &);&& &&& CreatePolyn(hb,5);&& // 正位序输入n个元素的值&& &&& printf(&多项式ha :&);&& &&& PolynTraverse(ha, visit);&& &&& printf(&\n&);&& &&& printf(&多项式hb :&);&& &&& PolynTraverse(hb, visit);&& &&& printf(&\n&);&& &&& hc = MergeList(ha,hb);&& &&& PolynTraverse(hc, visit);& &&return 0; }
这个限制了多项式项数了啊?
你调用是输入什么值,就可以调用多少!&CreatePolyn(ha,1);&& // 正位序输入n个元素的值&&&&CreatePolyn(hb,2);&& // 正位序输入n个元素的值
对啊,那不是不可以任意个数了么?
每次修改个数必须先改代码
你可以再主函数里设置两个变量alen, blen作为两个多项式的长度,然后分别传给CreatePolyn(ha,alen);
CreatePolyn(hb,blen);
就行了。主题框架都有了,剩余的自己想怎么改都行啊!学编程要学会自己动手,不懂先把别人的代码看懂,然后在自己做一些改变,不然是学不好的!
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
链表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用C语言实现数据结构的题目:一元多项式相加_百度知道
用C语言实现数据结构的题目:一元多项式相加
CreatF(L2;0){
printf(&i++){
for(j=1;expn-q-&}&#47;0){
o=o-&gt,q;else
else if(p-&expn,m);for }&#47; printf(&DisplayFvoid main(){ printf(&; }}&#47; scanf(&for}&#47;%d&expn=q-&
}&#47;&#47;expn-q-&gt下面的是本人编写的程序;i++){
p=(LNode) malloc(sizeof(LNode));
p-&n-i,q;expn&lt,p;next=NULL; AddF(L1;; p=L-&next=q;+%f*(%d)&quot,int n){
&#47;&#47;}&#47;while if(;coef+q-&if
p=p-&请输入第%d项的指数&quot,int n){
&#47!q-&j++){
if(p-&for}&#47;next) p-&
printf(& for(int i=2;
o=o-&CreatFvoid PaixuF(LNode &L;&#47; while(p&&q){
if(p-&#define MAXSIZE 20
&#47;expn);next=NULL;expn),i);n;expn&,小弟再次谢过;;expn){
t=p-& int expn,p-&
if( free(L2),经调试发现在排序那段有问题;&#47;&#47,L2;&#47,p-&
printf(&quot,m);建立一个多项式AddFvoid DisplayF(LNode &L,p-&
p=p-&结构定义typedef struct Node{ p=L-&&#47;expn&gt,m);
q-&; q=L2-&冒泡排序 LNcoef&lt,L2); struct Node * for(i=1,j;
scanf(&quot,&m);i&;
q-&=n,n,p-&expn==0){
else if(p-&%d&%f*(%d)&
}&#47; L-&gt。有没有高人帮我修改下,q;i&=n; CreatF(L1;
printf(&quot.0){
p-&%f&&#47;next=p;&#47;请输入第%d项的系数&),最好不要把我的框架改了,&n);expn),t;&#47.h&gt,p-& L=(LNode) malloc(sizeof(LNode)); q=p-&&#47;
q=q-& q=L;
o=p; PaixuF(L2;
q=q-&expn=-1;&#47;coef);if
else printf(&;请输入多项式L1的项数& o=L1,int n){
&#47; L-&expn); p=L1-&gt,p-&j&expn=t;请输入多项式L2的项数&quot!#include &
q=q-&显示多项式 LNode p.h&
} }&#47;PaixuFvoid AddF(LNode &L1;&#47;}*LNi++){
if(p-&#include &%d&); LNode L1;0){
o=o-&&#47;多项式加法运算 LN PaixuF(L1!=0;
p=p-&&#47; p=L-&&#47;
scanf(&void CreatF(LNode &L; for(i=1;
scanf(& LN%f*(%d)& DisplayF(L1;;expn-q-&
p=p-&&#47,&p-&next,&p-&&#47;i& int i,LNode &L2){
&#47;coef=sum,n);q-&stdio,n);
提问者采纳
&#92;n&quot,*p:1 1 4 2 6 3#include &);next=p1;
if(p2-&;zhi);
head1-&多项式的相加 {
struct poly *p1,struct poly *head2) &#47,*head2;
r1=head1;请输入多项式的每一项的系数与指数并以0 0为结束标志; };zhi==p2-&
r1-&/n&quot,&p1-& } void print(poly *head) {
struct poly *p;
head2=jianli();next=p2;
p2=p2-&zhi&&#92;
print(p)注意;p2-&
p1=p1-&gt:&#92;%d %d&#92,&p2-&xi)+(p2-&zhi)
1 1 2 2 3 3 0 0
2 2 3 3 0 0结果;
head1=jianli();
head1=(struct poly*)malloc(sizeof(poly));
else if(p1-&);
free(head2).h& } struct poly *jisuan(struct poly *head1;
p1-&next=p1,*p2;%d %d&
scanf(&quot:输入时; #include &
printf(&&#47,*r2,*head1;next=NULL;);xi);
r2=p2=head2-&
p2=(struct poly*)malloc(sizeof(poly)),&p2-&zhi==0) {free(p2);建立链表 {
struct poly *p1;
if(p1-&n合并后;n&/p2-&
p1=head1-&%d %d&xi==0) if(p2-&xi=(p1-&gt.h&}
p1-&gt,&p1-& struct poly *jianli(void) /&#92;
p=jisuan(head1;
} } void main() {
struct poly *head1;,p-&gt,*p2; p1=p1-&n请输入另一个多项式的每一项的系数与指数并以0 0为结束标志,head2),*r1;
struct poly *zhi)
free(r2); struct poly /
return(head1);
return(head1);next=p2,p-&
p=head-&zhi);
while(p1&&p2)
if(p1-&设置结构体 {
if(p1) free(head2);
scanf(&zhi);zhi&
p1=(struct poly*)malloc(sizeof(poly)); next=r2;;next=NULL:&#92,指数按升序输入如
提问者评价
谢啦!等等去运行阿!
其他类似问题
为您推荐:
其他1条回答
j&10在for条件参数中应用==(等于号)而不是=(赋值号)如:for(i==1
一元多项式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁随笔 - 39&
评论 - 44&
&&&&&&&&&&&
&学习了数据结构后,才对指针有更深的了解,指针就是C 的灵魂。
&&1#include&stdio.h&
&&2#include&malloc.h&
&&3#define&LEN&sizeof(Lnode)
&&4typedef&struct&node{&&&&&//创建结构体节点
&&5&&&&int&
&&6&&&&int&
&&7&&&&struct&node&*
&&8}Lnode,*L
&&9void&main(){
&10&&&&char&s;
&11&&&&Linklist&ha,hb,
&12&&&&Linklist&creat();
&13&&&&void&out(Linklist);
&14&&&&Linklist&add(Linklist,Linklist);
&16&&&&printf("求多项式A,B的和\n");
&17&&&&printf("请输入多项式A,按要求输入(指数按升序输入).\n以系数输入0表示结束\n");
&18&&&&ha=creat();//创建A
&19&&&&//输出A
&20&&&&printf("A的结果为:\n&A=");
&21&&&&out(ha);printf("\n");
&22&&&&printf("请输入多项式B,按要求输入(指数按升序输入).\n以系数输入0表示结束\n");
&23&&&&hb=creat();//创建B
&24&&&&//输出B
&25&&&&printf("B的结果为:\n&B=");
&26&&&&out(hb);
&27&&&&printf("\n");
&28&&&&hc=add(ha,hb);
&29&&&&printf("A+B的和为:");
&30&&&&out(hc);
&31&&&&printf("\n");
&32&&&&printf("是否继续(y/n)?&:");
&33&&&&scanf("%s",&s);
&34&&&&if(s=='y')
&35&&&&&&&&goto&
&36}&&//main结束
&37//创建多项式函数
&38Linklist&creat(){
&39&&&&Lnode&*p,*s;
&40&&&&Linklist&h;
&41&&&&int&c,a0,i=1;
&42&&&&s=(Lnode*)malloc(LEN);
&43&&&&p=s;h=s;
&44&&&&p-&xishu=NULL;
&45&&&&printf("请输入a0:");
&46&&&&scanf("%d",&a0);
&47&&&&s=(Lnode*)malloc(LEN);
&48&&&&p-&next=s;
&49&&&&p=p-&
&50&&&&p-&xishu=a0;
&51&&&&p-&zhishu=NULL;
&52&&&&p-&next=NULL;
&53&&&&while(1){
&54&&&&&&&&s=(Lnode*)malloc(LEN);
&55&&&&&&&&printf("请输入第%d个系数:",i);
&56&&&&&&&&scanf("%d",&c);
&57&&&&&&&&if(c==0)
&58&&&&&&&&&&&&break;
&59&&&&&&&&p-&next=s;
&60&&&&&&&&p=s;
&61&&&&&&&&p-&xishu=c;
&62&&&&&&&&printf("请输入第%d个系数对应的x的指数:",i);
&63&&&&&&&&scanf("%d",&c);
&64&&&&&&&&p-&zhishu=c;
&65&&&&&&&&p-&next=NULL;
&66&&&&&&&&i++;
&68&&&&return&h;
&70//多项式输出函数
&71void&out(Linklist&h){
&72&&&&Lnode&*p;
&73&&&&int&a=0,b=0;&//a判断是否用"+&#8221;,b是否整个多项式为0
&74&&&&p=h-&
&75&&&&while(p!=NULL){
&76&&&&&&&&if(p-&zhishu==NULL&&&&p-&xishu!=0){
&77&&&&&&&&&&&&printf("%d",p-&xishu);
&78&&&&&&&&&&&&b=1;
&79&&&&&&&&&&&&p=p-&a=1;
&80&&&&&&&&&&&&continue;
&81&&&&&&&&}
&82&&&&&&&&else&if(p-&xishu&0){
&83&&&&&&&&&&&&if(p-&xishu==-1)
&84&&&&&&&&&&&&&&&&printf("-X");
&85&&&&&&&&&&&&else
&86&&&&&&&&&&&&&&&&printf("%dX",p-&xishu);
&87&&&&&&&&&&&&b=1;a=1;
&88&&&&&&&&&&&&if(p-&zhishu!=1)&
&89&&&&&&&&&&&&&&&&printf("^%d",p-&zhishu);
&90&&&&&&&&&&&&
&91&&&&&&&&}
&92&&&&&&&&else&if(p-&xishu&0){
&93&&&&&&&&&&&&if(a==1)printf("+");
&94&&&&&&&&&&&&if(p-&xishu!=1)&printf("%d",p-&xishu);
&95&&&&&&&&&&&&printf("X");b=1;
&96&&&&&&&&&&&&if(p-&zhishu!=1)&printf("^%d",p-&zhishu);
&97&&&&&&&&&&&&a=1;
&98&&&&&&&&}
&99&&&&&&&&p=p-&
101&&&&if(b==0)
102&&&&&&&&printf("0");
104//多项式A,B相加的函数add()
105Linklist&add(Linklist&ha,Linklist&hb){
106&&&&Linklist&&&//定义c的头节点
107&&&&Lnode&*pa,*pb,*pc,*t;
108&&&&pa=ha-&pb=hb-&
109&&&&hc=pc=
110&&&&free(hb);
111&&&&while(pa&&&&pb){
112&&&&&&&&if(pa-&zhishu!=NULL&&&&pb-&zhishu==NULL){//a无常数项,b有
113&&&&&&&&&&&&pb=pb-&
114&&&&&&&&&&&&break;
115&&&&&&&&}
116&&&&&&&&else&if(pa-&zhishu==NULL&&&&pb-&zhishu!=NULL){//b无常数项,a有
117&&&&&&&&&&&&pa=pa-&
118&&&&&&&&&&&&pc=pc-&
119&&&&&&&&&&&&break;
120&&&&&&&&}
121&&&&&&&&else&if(pa-&zhishu==NULL&&&&pb-&zhishu==NULL){//a,b都有常数项
122&&&&&&&&&&&&pa-&xishu=pa-&xishu+pb-&
123&&&&&&&&&&&&pa=pa-&pb=pb-&
124&&&&&&&&&&&&pc=pc-&
125&&&&&&&&}
126&&&&&&&&else&if(pa-&zhishu&&&pb-&zhishu){//a的指数项大
127&&&&&&&&&&&&pc-&next=
128&&&&&&&&&&&&pc=pc-&
129&&&&&&&&&&&&pb=pb-&
130&&&&&&&&&&&&pc-&next=NULL;
131&&&&&&&&}
132&&&&&&&&else&if(pa-&zhishu&pb-&zhishu){//b的指数项大
133&&&&&&&&&&&&pc-&next=
134&&&&&&&&&&&&pc=pc-&
135&&&&&&&&&&&&pa=pa-&
136&&&&&&&&&&&&pc-&next=NULL;
137&&&&&&&&}
138&&&&&&&&else{&&&&&&&&&&&&&&&&&&&&&&&&//a,b的指数相同
139&&&&&&&&&&&&pa-&xishu=(pa-&xishu)+(pb-&xishu);
140&&&&&&&&&&&&if(pa-&xishu==0){&&&&&&&&//和为0,删节点
141&&&&&&&&&&&&&&&&t=
142&&&&&&&&&&&&&&&&pa=pa-&
143&&&&&&&&&&&&&&&&free(t);
144&&&&&&&&&&&&}
145&&&&&&&&&&&&else{
146&&&&&&&&&&&&&&&&pc-&next=
147&&&&&&&&&&&&&&&&pc=pc-&
148&&&&&&&&&&&&&&&&pa=pa-&
149&&&&&&&&&&&&}
150&&&&&&&&&&&&t=
151&&&&&&&&&&&&pb=pb-&
152&&&&&&&&&&&&pc-&next=NULL;
153&&&&&&&&&&&&free(t);
154&&&&&&&&}
155&&&&}//while&结束
156&&&&if(pa)
157&&&&&&&&pc-&next=
158&&&&else
159&&&&&&&&pc-&next=//剩余的结点加到链表
160&&&&return&
161}//add函数结束
阅读(...) 评论()C语言数据结构用链表实现多项式的加法,有错但不知道怎么改。。。在线等!!!_百度知道
C语言数据结构用链表实现多项式的加法,有错但不知道怎么改。。。在线等!!!
#define MaxNum 20#define datatype floatstruct SeqList{
datatype a[MaxNum];i&pa-&gt!= NULL ) {
printf(&下面的代码实现两个多项式求和&#47;ok&#92;&#47;};&#47!= NULL ) {
printf(&}int add_ploy(){ } return 1;}int locat_seq(typedef struct SeqList * }&#47;j--)
return 0;MaxNum) {
printf(&n&
palist-& pb = createNUll_list_seq(),&#92;len& else
palist-&);n&quot:&#92!&quot.h& palist = (plist)malloc(sizeof(struct SeqList)); if(palist == NULL )
printf(& } if(index&);}int insert_seq(plist palist!= NULL ) {
printf(&创建空表pb成功&#92;n&* locat_seq(pploy!&#92;; } if( psum ,int index.h&len=0;len++;n&);
printf(&quot,float *a){}int print_poly_seq(plist pa)&#47;a[j];
return 0;1||index&gt,cof)#include&lt,);}void main(){ &#47;plist createNUll_list_seq(){ } else
for(j=palist-& &#47;%d&len-1;n&stdio, print_poly_seq(pploy); *&#47;);创建空表psum成功&#92;n&i++)
printf(&); print_poly_seq(pa); pa = createNUll_list_seq();the %d th coeficient of ploy is %f&#92; print_poly_seq(pb);&#47;顺序表为空&#92; if(a[j+1]=palist-&j& } if(#include&创建空表pa成功&#92; } printf(&本函数实现打印pa指向的多项式{); print_poly_seq(psum):%d不合法;&#47;len==0) {
printf(& for(i=0;n&
palist-&printf(& if(palist-& add_ploy();插入位置; psum = createNUll_list_seq();a[i]); printf(&n&quot,0;a[index-1];);n&quot,0;);;=index-1;=MaxNum) {
printf(&quot,&cof); return 1;顺序表;);表空间溢出&#92,pa-& if(pa-&n&quot,float a){ int j
还有后面应该还要再写。。。着实不会c= =
提问者采纳
你这个结构定义的不合适吧,并给个测试案例,这种结构怎么知道哪个数据与哪个数据相加啊; int len#define datatype floatstruct SeqList{
datatype a[MaxNum];多项式求和;}?!把你的题目完整的列出来
这个写的是顺序表应该…题目具体还真没有,就是老师说了一下
写程序之前必须要做的一件事就是搞明白需求,如果都不知道要做什么,你怎么可能做出正确的软件呢?
再明确一下题目要求吧,不然,你就去网上搜一搜感觉符合你要求的代码吧。
谢谢,我还是问同学了
嗯,同学有的问,何苦上百度
上机课没机会问…
希望你已经解决了问题
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
链表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言多项式求和 的文章

 

随机推荐