| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 563 人关注过本帖
标题:只想知道为什么函数调用不行??说明的是我工具是用trube c的
只看楼主 加入收藏
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
只想知道为什么函数调用不行??说明的是我工具是用trube c的
1.在键盘上输入相关资料,建立一个单向链表HA,该链表按学生学号从小到大的次序链结(在输入时,用户不一定严格按学生学号从小到大的次序输入);
   2.输出链表HA(供核对);
   3.从刚生成的链表HA中,找出所有考试成绩大于等于85分以上的学生的资料,生成另外一个链表HB,该链表按同学的考试成绩从大到小的次序链结;
   4.输出新生成的链表HB(供核对)。
下面这个程序可以实现上面的要求。但是good函数(85分以上的生成另一个链表输出求只能在函数里面做如果像Creat函数那样另编一个输出函数却会乱码为什么呢?)
#include<iomanip.h>
#include<iostream.h>
#include<conio.h>
struct student
{ long num;
  float score;
  student *next;
};
student *Creat()
{ student *h,*p,*q,*k,*d;int i;
  h=NULL;    i=1;
  p=new student;
  cout<<"\nInput ["<<i<<"] num and score[End <0] \n";
  cin>>p->num>>p->score;
  i++;
  while(p->num>0&&p->score>0)
  { if(h==NULL)
    { h=p;
      q=p;
      k=p;
    }
    else
    { if(p->num>=q->num)
      { q->next=p;
    q=p;
      }
      if(p->num<q->num)
      { if(p->num<k->num)
    { p->next=k;
      h=p;
      k=h;
    }
    else
    { while(p->num>k->num)
      { d=k;
        k=k->next;
      }
      p->next=k;
      d->next=p;
      k=h;
    }
      }
    }
    p=new student;
    cout<<"\nInput["<<i<<"] num and score\n";
    cin>>p->num>>p->score;
    i++;
  }
  q->next=NULL;
  return h;
}

student *good(student *h)
{ student *p,*L,*q,*k,*n,*m;
  p=h;



  L=NULL;
  q=new student;
  q->num=p->num;
  q->score=p->score;
  while(p!=NULL)
  { if(q->score>=85)
    {  if(L==NULL)
    { L=q;
      k=q;
      n=q;
    }
      else
      { if(q->score<=k->score)
     { k->next=q;
        k=q;
     }
    else
    {  if(q->score>=n->score)
       { q->next=n;
         L=q;
         n=q;
       }
       else
       { while(q->score<n->score)
         { m=n;
           n=n->next;
         }
         q->next=n;
         m->next=q;
         n=L;
       }
    }
      }
    }
    if(q->score<85)
    delete(q);
    if(p!=NULL)
    { p=p->next;
     q=new student;
     q->num=p->num;
     q->score=p->score;
    }
  }
  k->next=NULL;
  cout<<"\nHB list\n";
  if(k==NULL)
  { cout<<"\nNULL";
  }
  else
  {
   while(n!=NULL)
   {  cout<<"\n"<<n->num<<"\t"<<n->score;
     n=n->next;
   }
  }
  return L;
}
void print(student *h)
{ student *p;
  p=h;
  cout<<"\nHA list:\n";
  while(p!=NULL)
  { cout<<"\n"<<p->num<<"\t"<<p->score;
    p=p->next;
  }
}
void main()
{ student *head;char ch;
  do
  {
   head=Creat();
    print(head);
    good(head);

    cout<<"\nContinue??(n\anykey)\n";
    ch=getch();
  }while(ch!='n');
}
为什么加了这个输出L链表(85分的) 却无法正确输出呢?一定要在生成链表的那个函数里面输出吗?
void cou(student *L)
{student *p;
 p=L;
 cout<<"\nHB list\n";
  if(p==NULL)
  { cout<<"\nNULL";
  }
  else
  {
   while(p!=NULL)
   {  cout<<"\n"<<p->num<<"\t"<<p->score;
     p=p->next;
   }
  }
搜索更多相关主题的帖子: 考试成绩 include 键盘 用户 
2014-04-02 21:35
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:20 
如果你是完全复制的代码的话,

函数定义的时候:void cou(student *L)

你的左半括号用的是中文输入法,我不知道是不是编译器把cou(student看做一个变量名了,你看看报错信息中是不是提示这一行要写个分号?

也有可能是你复制的时候复制错了,所以真正的问题不在这里吧。

另外你没有使用命名空间std,怎么用的cout?

TC环境我没怎么接触过,但是在VS环境下,你的头尾件#include<iomanip>加了.h的话就打不开。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2014-04-03 07:07
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 2楼 蚕头燕尾
没报错啊,加了后可以运行啊 ,但是会乱码
2014-04-03 08:31
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 2楼 蚕头燕尾
可以啊 那个cout可以使用的 虽然我没用 std
2014-04-03 08:33
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 楼主 cs1344
只要在iostream后加.h就可以省略 std了
2014-04-03 08:35
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
那你前面的那个函数定义是否如我所说,用的中文输入法输入的左半括号?


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2014-04-03 11:38
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 5楼 cs1344
额不是
2014-04-03 17:53
快速回复:只想知道为什么函数调用不行??说明的是我工具是用trube c的
数据加载中...
 
   



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

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