| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:程序执行问题!请高手指点
只看楼主 加入收藏
wykking
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
程序执行问题!请高手指点
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
typedef struct geshou{
 float score[9];
 float average;
 struct geshou *next;
 char name[100];
 
}gs;
gs *createfirst()
{
 gs *s,*h;
 int n,i,j;
 float sum;
 int a,b;
 float temp;
h=(gs*)malloc(sizeof(gs));
 h->next=NULL;
 printf("请输入参加比赛的歌手人数:");
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 {
  s=(gs*)malloc(sizeof(gs));
  printf("请输入参加比赛第%d号歌手姓名:",i);
  scanf("%s",s->name);
  printf("请输入参加比赛第%d号歌手分数:",i);
  for(sum=0,j=0;j<=8;j++)
  {
   scanf("%f",&(s->score[j]));
   sum+=(s->score[j]);
  }
  a=0;
  b=1;
  while((a<9)&&(b>0))
  {
   b=0;
   for(j=8;j>a;j--)
   {
    if(s->score[j]<s->score[j-1])
    {temp=s->score[j];
    s->score[j]=s->score[j-1];
    s->score[j-1]=temp;
    b++;
    }
   }
   a++;
  }
  sum=sum-(s->score[0])-(s->score[8]);
        s->average=sum/9.0;
  s->next=h->next;
  h->next=s;
 }
 return h;
}
void insertlist(gs *h)
{
 gs *s1;
 int a1,b1,j1;
 float temp1,sum1;
 s1=(gs*)malloc(sizeof(gs));
 printf("请输入添加的比赛的歌手姓名:");
  scanf("%s",s1->name);
 printf("请输入添加的比赛的歌手的9个分数:");
  for(sum1=0,j1=0;j1<=8;j1++)
  {
   scanf("%f",&(s1->score[j1]));
   sum1+=(s1->score[j1]);
  }
  a1=0;
  b1=1;
  while((a1<9)&&(b1>0))
  {
   b1=0;
   for(j1=8;j1>a1;j1--)
   {
    if(s1->score[j1]<s1->score[j1-1])
    {temp1=s1->score[j1];
    s1->score[j1]=s1->score[j1-1];
    s1->score[j1-1]=temp1;
    b1++;
    }
   }
   a1++;
  }
  sum1=sum1-(s1->score[0])-(s1->score[8]);
 s1->average=sum1/9.0;
 s1->next=h->next;
 h->next=s1;
}
void deletelist(gs *h)
{  
 gs *p3,*p4;
    p3=h;
 while(p3->next!=NULL)
 {
  if(p3->next->name=="jh")
  {
   p4=p3->next;
            p3->next=p4->next;
   free(p4);
  }
  else
   p3=p3->next;
 }
 
}
void paixu(gs *h)
{
 gs *P,*Q,*P1,*Q1;
  P=Q=Q1=h;
  P1=P->next;
  
  if(P1->average<P->average)
  { P=P1;
  Q=Q1;}
      Q1=P1;
      P1=P1->next;
  
}
void display(gs *h)
{
 gs *q;
 int m;
 q=h->next;
 while(q!=NULL)
 {
  printf("%s\n",q->name);
      
            printf("%.1f\n",q->average);
  q=q->next;
 }
}
void main()
{
 gs *p;
 p=createfirst();
    deletelist(p);
display(p);
}
请您帮我看一下为什麽我用链表编的这个程序中deletelist(gs *h)和 paixu(gs *h)函数用不了,谢谢


搜索更多相关主题的帖子: average include 姓名 
2009-11-12 22:59
liyu355
Rank: 2
等 级:论坛游民
帖 子:23
专家分:89
注 册:2009-11-6
收藏
得分:5 
你的代码及容易崩溃。
你的paixu从中文理解估计是排序用的吧。你这些指针转来转去的,我没看出来和你传入的h指针传入和传出之间有什么差异。
至于你的删除我看了下,貌似p3=p3->next不是必然会被调用的,而被调用的时候,p3又不是会被删除掉的。不是很明白你到底想干什么。

你的代码的可读性太差。
2009-11-14 14:40
wgd123pl
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:23
专家分:24
注 册:2008-8-16
收藏
得分:5 
我先赞成楼上的说法。
2009-11-14 16:44
bccnbin2009
Rank: 7Rank: 7Rank: 7
来 自:浙江
等 级:黑侠
帖 子:86
专家分:602
注 册:2009-10-5
收藏
得分:5 
同意二楼的说法,建议你最好能好好的看看数据结构中链表那一章

滨封千里
2009-11-15 14:47
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:5 
在必要的地方加上一些注释,这是一个好的 习惯,要慢慢养成啊。。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2009-11-16 12:49
快速回复:程序执行问题!请高手指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064400 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved