永发信息网

C语言编程题,运行不了,大家给我看一下

答案:4  悬赏:70  手机版
解决时间 2021-02-23 13:29
#include
#include

typedef struct Lnode
{
int e;
double c;
struct Lnode *next;

}Lnode,*linklist;

linklist creat_linklist()
{
linklist l=NULL;
Lnode *s;
int i,n,e;
double c;

printf("\n");
printf("Enter n:");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
printf("Enter %d c,e:",i);
scanf("%lf%d",&c,&e);
s=(Lnode*)malloc(sizeof(Lnode));
s->c=c;
s->e=e;
s->next=l;
l=s;
}

while(l)
{
printf("%.2f^%d ",l->c,l->e);
l=l->next;
}

return l;
}

linklist count (linklist l1,linklist l2)
{
Lnode *s,*l;
double x;
char ch;

l=(Lnode*)malloc(sizeof(Lnode));

while(l1&&l2)
{
printf("请选择符号:\n+\n-\n");
scanf(" %c",&ch);

switch(ch)
{
case '+':

if(l1->e==l2->e)
{
x=l1->c+l2->c;
}

else if(l1->e>l2->e)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;
s->c=l2->c;
s->next=l;
l=s;
l2=l2->next;
}

else
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=l1->c;
s->next=l;
l=s;
l1=l1->next;
}

break;
case '-':
if(l1->e==l2->e)
{
x=l1->c-l2->c;
l1=l1->next;
l2=l2->next;
}

else if(l1->e>l2->e)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;
s->c=(-1)*l2->c;
s->next=l;
l=s;
l2=l2->next;
}

else
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=l1->c;
s->next=l;
l=s;
l1=l1->next;
}

break;
default:
printf("Uknown operator\n");
}

if(x!=0)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=x;
s->next=l;
l=s;

l1=l1->next;
l2=l2->next;
}

while(l1!=NULL)
{
s=(Lnode*)malloc(sizeof(Lnode));
s=l1;
l1=l1->next;
s->next=l;
l=s;
}

while(l2!=NULL)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;

if(ch='-')
{
s->c=(-1)*l2->c;
}

else
{
s->c=l2->c;
}

l2=l2->next;
s->next=l;
l=s;
}
}
return l;
}

void swap(linklist p,linklist q)
{
double m;
int n;
m=p->c;
p->c=q->c;
q->c=m;

n=p->e;
p->e=q->e;
q->e=n;
}

void sort(linklist l)
{
Lnode *p,*q;
p=l;
if(p==NULL)
return;
while(p)
{
q=p;
while(q)
{
if(q->ee)
swap(q,p);
else q=q->next;
}
p=p->next;
}
}

int main(void)
{
Lnode *l1,*l2;
linklist l,s;
l1=(Lnode*)malloc(sizeof(Lnode));
l2=(Lnode*)malloc(sizeof(Lnode));
l1=creat_linklist();
l2=creat_linklist();
l=count(l1,l2);
sort(l);
s=l;

while(s)
{
printf("%.2f^%d ",s->c,s->e);
s=s->next;
}

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

说详细点
最佳答案
表示蛋疼!程序的作用是什么?看了半天,没看明白!改了一些,主要是尾指针指空的问题。在做“+”、“-”之前的应该都没问题了,问题是你后面的逻辑太混乱了,建议你画画流程图。
#include
#include

typedef struct Lnode
{
int e;
double c;
struct Lnode *next;

}Lnode,*linklist;

linklist creat_linklist()
{
linklist l=NULL;
Lnode *s;
int i,n,e;
double c;

printf("\n");
printf("Enter n:");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
printf("Enter %d c,e:",i);
scanf("%lf%d",&c,&e);
s=(Lnode*)malloc(sizeof(Lnode));
s->c=c;
s->e=e;
s->next=l;
l=s;
}
//真笨,这样 l 又指空了
s=l;
while(s)
{
printf("%.2f^%d ",s->c,s->e);
s=s->next;
}

return l;
}

linklist count (linklist l1,linklist l2)
{
Lnode *s,*l;
double x;
char ch;

//l=(Lnode*)malloc(sizeof(Lnode));//尾结点,直接指空
l=NULL;

while(l1&&l2)
{
printf("请选择符号:\n+\n-\n");
scanf(" %c",&ch);

switch(ch)
{
case '+':

if(l1->e==l2->e)
{
x=l1->c+l2->c;
}

else if(l1->e>l2->e)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;
s->c=l2->c;
s->next=l;
l=s;
l2=l2->next;
}

else
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=l1->c;
s->next=l;
l=s;
l1=l1->next;
}

break;
case '-':
if(l1->e==l2->e)
{
x=l1->c-l2->c;
l1=l1->next;
l2=l2->next;
}

else if(l1->e>l2->e)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;
s->c=(-1)*l2->c;
s->next=l;
l=s;
l2=l2->next;
}

else
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=l1->c;
s->next=l;
l=s;
l1=l1->next;
}

break;
default:
printf("Uknown operator\n");
}

if(x!=0)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l1->e;
s->c=x;
s->next=l;
l=s;

l1=l1->next;
l2=l2->next;
}

while(l1!=NULL)
{
s=(Lnode*)malloc(sizeof(Lnode));
s=l1;
l1=l1->next;
s->next=l;
l=s;
}

while(l2!=NULL)
{
s=(Lnode*)malloc(sizeof(Lnode));
s->e=l2->e;

if(ch='-')
{
s->c=(-1)*l2->c;
}

else
{
s->c=l2->c;
}

l2=l2->next;
s->next=l;
l=s;
}
}
return l;
}

void swap(linklist p,linklist q)
{
double m;
int n;
m=p->c;
p->c=q->c;
q->c=m;

n=p->e;
p->e=q->e;
q->e=n;
}

void sort(linklist l)
{
Lnode *p,*q;
p=l;
if(p==NULL)
return;
while(p)
{
q=p;
while(q)
{
if(q->ee)
swap(q,p);
else q=q->next;
}
p=p->next;
}
}

int main(void)
{
Lnode *l1,*l2;
linklist l,s;
l1=(Lnode*)malloc(sizeof(Lnode));
l2=(Lnode*)malloc(sizeof(Lnode));
l1=creat_linklist();
l2=creat_linklist();
l=count(l1,l2);
sort(l);
s=l;

while(s)
{
printf("%.2f^%d ",s->c,s->e);
s=s->next;
}

printf("\n");
return 0;
}
全部回答
这个功能函数是用于计算数组的平均值以及大于平均值的 你传进去任意的一个要计算的数组(src)及它的长度(length),还有存放大于平均值的数组(dest)就行 不一定限制长度就是10的,大小是任意的。 #include <stdio.h> double fun4(double src[], int length, double dest[]) {    int i, j;    double total = 0.0, avg = 0.0;    for(i = 0; i < length; i++)    {     total += src[i];    }    avg = total / length;    for(i = 0, j = 0; i < length; i++)    {     if(src[i] > avg)     {     dest[j] = src[i];     j++;      }    }       return avg; } int main(void) {    int i;    double src[] = {1,2,3,4,5,6,7,8,9,10};    double dest[10];    double avg = 0.0;      for(i = 0; i < 10; i++)    {     dest[i] = -1;    }    avg = fun4(src,10,dest);       printf("源数组数据为:\n");    for(i = 0; i < 10; i++)    {     printf("%lf ",src[i]);    }    printf("\n平均值为:%lf \n大于平均值的数为:\n", avg);    for(i = 0; i < 10; i++)    {     if(dest[i] != -1)     printf("%lf ",dest[i]);    }    getchar();    return 0; }
while(l) { printf("%.2f^%d ",l->c,l->e); l=l->next; } return l; 创建链表时候输出 结果返回的l是NULL值 提个中间变量做输出 还有if(x!=0) double变量不能这么判断 while(l1!=NULL) while(l2!=NULL) 是不是应该放在while循环之外更加好
你的链表创建函数没错,但创建的链表是逆向创建,懂吗,你先创建了最后一个结点。 错误:l1=(Lnode*)malloc(sizeof(Lnode)); l2=(Lnode*)malloc(sizeof(Lnode)); l1=creat_linklist(); l2=creat_linklist(); 前面两部是无用操作,在creat_linklist函数中已经分配了内存。 你明显搞不清楚概念,Lnode*就是linklist啊。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
灸灸艾一盒多少钱?
淘宝满减和优惠券可以同时使用吗
我结婚7年了,可是老公经常说我贴补娘家,我
小李汽车电器配件地址在哪,我要去那里办事
牵了手亲了嘴却不做我女朋友
帮帮忙吧,19.20.21填怎么做,谢谢
We 什么all very happy to see then
有没有电视遥控器手机软件可以用?
饥荒蜂箱怎么做 饥荒怎么取蜂蜜
印象·田园我想知道这个在什么地方
高层楼房手机信号不好怎么办
请问,林间新月挂南方 (谜友),
我觉得看液晶电视16:9的屏幕不太舒服,把图像
瘀血形成之后可致疼痛,其特点为A.胀痛B.掣痛
我的别克新世纪99款的,发动机舱里面有个220v
推荐资讯
我在湖北高速公路违章超速,信息发给我了,我
Hybrid APP开发常用框架有哪些
微信腾讯公益怎样发起
像打了鸡血一样兴奋什么意思
为什么我中国移动已经交了欠费的钱,怎么还是
佳诺壁纸这个地址在什么地方,我要处理点事
高分求寒蝉鸣泣之时第一季,解,猫杀篇,礼,
金海名都大酒店-九天娱乐会所在什么地方啊,
梦幻西游89跑完人物环的多少经验
美莱商务大厦-地下车库在哪里啊,我有事要去
女生恶心想吐,感觉很饿但是吃不下饭
为什么我自己觉得我自己很笨,别人却说我是聪
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?