那位仁兄帮个忙找找错误,实在是无能为力了
那位仁兄帮个忙找找错误,实在是无能为力了
找滴俺们想爆发了。
编译器提示是一个错误,但是不知道还有别的其他啥错误没。谢谢了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
typedef struct node
{float xi;
int mi;
struct node *next;}L;
void InitList(L **head)
{ if((*head=(L*)malloc(sizeof(L)))==NULL) exit(1);
(*head)->next=NULL;}
int ListInsert(L *head,int i,float L.xi,int L.mi)
{L *p,*q,*head;
p=head;
if((q=(L*)malloc(sizeof(L)))==NULL) exit(1);
q.xi=L.xi;
q.mi=L.mi;
q->next=p->next;
p->next=q;
return 1;}
int ListLength(L *head)
{L *p=head;
int size=0;
while(p->next!=NULL)
{p=p->next;
size++;}
return size;}
int ListGet(L *head,int i,int *L.xi,int *L.mi)
{L *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i)
{p=p->next;
j++;}
if(j!=i)
{printf("get an error");
return 0;}
*L.xi=p.xi;
*L.mi=p.mi;
return 1;}
void combine(L *head,int n)
{ L *p,*q,*t;
int a,b,i,j,temp1,temp2;
t=p=q=head;
q=t->next;
for(i=0;i<n;i++)
{
if(p->next==q)
p=p;
else
p=p->next;
for(j=0;j<n-i;j++)
{p.xi+=q.xi;
t->next=q->next;
free(q);
q=q->next;}
if(t->next==q)
t=t;
else
t=t->next;
if(p.mi>q.mi)
{tmep1=p.mi;
p.mi=q.mi;
q.mi=p.mi;
tmep2=p.xi;
p.xi=q.xi;
q.xi=temp2;}}
void key(L *h,float sum,float x)
{int *p; int i,j=1,xi,mi; float sum=0.0;
p=h;
for(i=0;i<ListLength(h);i++)
{
if(ListGet(h,i,&xi,&mi)==0)
{printf("error!\n");
return; }
else { printf("%d %d",xi,mi);
sum=sum+xi*mi(mi,x,j);
printf("%f",sum);}}
int mi(int n,float x,int j)
{
int i;
for(i=0;i<n;i++)
{
j=j*x;
}
return j;
}
main()
{ int i,m;
L *h,*p;
float x,sum;
m=10;
InitList(&h);
printf("please input the Expressions");
for(i=1;i<=m;i++)
{scanf("%d",&h.xi);
scanf("%d",&h.mi);
ListInsert(h,i,h.xi,h.mi);}
combine(*head,m);
printf("please intput X");
scanf("%f",&x);
key(h,sum,x);}
[ 本帖最后由 a207988 于 2008-6-7 01:32 编辑 ]
[ 本帖最后由 a207988 于 2008-6-7 01:58 编辑 ]
[ 本帖最后由 a207988 于 2008-6-7 02:35 编辑 ]
那位仁兄帮个忙找找错误,实在是无能为力了
找滴俺们想爆发了。编译器提示是一个错误,但是不知道还有别的其他啥错误没。谢谢了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
typedef struct node
{float xi;
int mi;
struct node *next;}L;
void InitList(L **head)
{ if((*head=(L*)malloc(sizeof(L)))==NULL) exit(1);
(*head)->next=NULL;}
int ListInsert(L *head,int i,float L.xi,int L.mi)
{L *p,*q,*head;
p=head;
if((q=(L*)malloc(sizeof(L)))==NULL) exit(1);
q.xi=L.xi;
q.mi=L.mi;
q->next=p->next;
p->next=q;
return 1;}
int ListLength(L *head)
{L *p=head;
int size=0;
while(p->next!=NULL)
{p=p->next;
size++;}
return size;}
int ListGet(L *head,int i,int *L.xi,int *L.mi)
{L *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i)
{p=p->next;
j++;}
if(j!=i)
{printf("get an error");
return 0;}
*L.xi=p.xi;
*L.mi=p.mi;
return 1;}
void combine(L *head,int n)
{ L *p,*q,*t;
int a,b,i,j,temp1,temp2;
t=p=q=head;
q=t->next;
for(i=0;i<n;i++)
{
if(p->next==q)
p=p;
else
p=p->next;
for(j=0;j<n-i;j++)
{p.xi+=q.xi;
t->next=q->next;
free(q);
q=q->next;}
if(t->next==q)
t=t;
else
t=t->next;
if(p.mi>q.mi)
{tmep1=p.mi;
p.mi=q.mi;
q.mi=p.mi;
tmep2=p.xi;
p.xi=q.xi;
q.xi=temp2;}}
void key(L *h,float sum,float x)
{int *p; int i,j=1,xi,mi; float sum=0.0;
p=h;
for(i=0;i<ListLength(h);i++)
{
if(ListGet(h,i,&xi,&mi)==0)
{printf("error!\n");
return; }
else { printf("%d %d",xi,mi);
sum=sum+xi*mi(mi,x,j);
printf("%f",sum);}}
int mi(int n,float x,int j)
{
int i;
for(i=0;i<n;i++)
{
j=j*x;
}
return j;
}
main()
{ int i,m;
L *h,*p;
float x,sum;
m=10;
InitList(&h);
printf("please input the Expressions");
for(i=1;i<=m;i++)
{scanf("%d",&h.xi);
scanf("%d",&h.mi);
ListInsert(h,i,h.xi,h.mi);}
combine(*head,m);
printf("please intput X");
scanf("%f",&x);
key(h,sum,x);}
[ 本帖最后由 a207988 于 2008-6-7 01:32 编辑 ]
[ 本帖最后由 a207988 于 2008-6-7 01:58 编辑 ]
[ 本帖最后由 a207988 于 2008-6-7 02:35 编辑 ]





2008-6-7 00:25



