标题:关于冒泡法的编写
只看楼主
肥仔
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-9-1
结帖率:0
 问题点数:0 回复次数:10 
关于冒泡法的编写
从键盘输入一组学生的姓名、课程、成绩,编写程序按从高到低的顺序对成绩排序,并能根据输入的姓名,显示该生的课程名称、成绩和名次。
搜索更多相关主题的帖子: 冒泡 编写 
2010-09-01 14:23
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
网上很多 百度一下

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-01 14:25
肥仔
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-9-1
得分:0 
回复 2楼 vandychan
网上那些好像有点混乱 想要写详细的 谢谢各位大哥啦
2010-09-01 14:30
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
那你自己先做做吗

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-01 14:31
肥仔
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-9-1
得分:0 
问题是我对编程不会  明天要交作业啦  痛苦 能帮帮忙吗?
2010-09-01 14:34
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
以下是引用肥仔在2010-9-1 14:34:14的发言:

问题是我对编程不会  明天要交作业啦  痛苦 能帮帮忙吗?
晕 我帮你是害了你

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-01 14:47
肥仔
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-9-1
得分:0 
哈哈哈哈哈哈哈哈哈  
2010-09-01 14:49
xhlxx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-1
得分:0 
哈哈哈哈哈哈哈哈哈
2010-09-01 16:14
江南豪客
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2010-7-29
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<sting.h>
#define LEN sizeof(struct link)
#define NULL 0
typedef struct link {
                        int number;
                        char name[10];
                        double math;
                        double english;
                        double china;
                        float average;
                        struct link *next;
                     } ;
typedef link *list
 link *head(int N)
{
   list head,one,two;
   int i;
   one=(list)malloc(LEN);
   if(one!=NULL)
   head=two=one;
   one->next=NULL;
   two->next=NULL;
   printf("请输入学生数据:\n")
   for(i=0;i<N;i++)
   {
    printf("学生学号:\n");
    scanf("%d",&one->number);
    printf("学生姓名:\n");
    scanf("%s",&one->name);
    printf("数学:\n");
    scanf("%d",&one->math);
    printf("英语:\n");
    scanf("%d",&one->english);
    printf("语文:\n");
    scanf("%d",&one->china);
    one->average=((one->math)+(one->english)+(one->china))/3
    one=(LIST *)malloc(LEN);
    two->next=one;
    two=one;
    }
    two->next=NULL;
    two=one=head;
    return head;
   }
   
viod prinf_student(list head)//链表的打印
 {
   list ps;
   if(head==NULL)
   {
   printf("空链表");
   getch();
   exit(1);
   }
   ps=head;
   while(ps=NULL)
   {
    printf("学号\t\t姓名\t\t数学\t\t英语\t\t语文\t\t平均成绩\n");
    printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\n",ps->number,ps->name,ps->math,ps->english,ps->china,ps->average);
    ps=ps->next;
   }
    free(ps);
    }
   
insert_student(list pss,list head)//插入学生成绩(在主函数中建立一个学生的信息)
 {
   list one,two,three;
   one=pss;
   two=head;
   if(head=NULL)
     {
     head=one;
     pss->next=NULL;
     }
    else
    {
     while((one->average<two->average)&&(two->next!=NULL))//查询
     {
       three=two;
       two=two->next;
      
       }
       if(one->average=>two->average)
         {
          three->next=one;
          one->next=two;
          }
          else
          {
           two->next=one;
           one->next=NULL;
           }
        }
  printf("插入成功");
  one=two=three=head;//这一步不知是否多次一举
  return head;
  }   
   
  
   
 link *delete_student(int num,list head)//按学号删除学生记录(输入学生学号)
 {
 list p0,p1,p2;
  p0=head;
  while((num!=p0->number)&&(p0->next!=NULL))
  {  
    p1=p0;
    p0=p0->next;
      }
     if(num==p0->number)
     {
      p1->next=p0-next;
      printf("学号%d资料删除成功",p0->num);
      }
     else{
     printf("没有该学号");
        }
     return head;
  
  }
  
  
 
link *order_list(list head)//排序
{  list temp,ps;
   link tempdate;
   tempdate->next=NULL;
   ps=head;
 if("ps==NULL")
{
  printf("链表为空");
  getch();
  exit(1);
 }
 for(ps=head;ps=NULL;ps=ps->next)
  {
   for(temp=ps->next;temp=NULL;temp=temp->next)
    {
       if(ps->average<=ps->average)
       {
          tempdate->number=temp->nunber;
          tempdate->name=temp->name;
          tempdate->math=temp->math;
          tempdate->english=tem->english;
          tempdate->china=temp->china;
          tempdate->average=temp->average;
          temp->number=ps->number;
          temp->name=ps->name;
          temp->math=ps->math;
          temp->english=ps->english;
          temp->china=ps->china
          temp->average=ps->average;
          ps->number=tempdate->number;
          ps->name=tempdate->name;
          ps->math=tempdate->math;
          ps->english=tempdate->english;
          ps->china=tempdate->china;
          ps->average=tempdate->average;
                        
          }
    }
   return head;
}

list head;//定义一个全局变量
void main()
{
 int ch,N,num;
 list pass;
 printf("欢迎使用学生管理系统");
 printf("********************");
 printf("1:输入学生成绩");
 printf("2:插入学成绩");
 printf("3:删除学生成绩");
 printf("4:退出系统");
 printf("********************")
 scanf("%d",&ch);
 switch(ch)
 case 1:{printf("请输入要输入的学生数");
         scanf("%d",&N);
         head=head(int N);//输入
         order_list(list head);//排序
         prinf_student(list head);//打印
         break;
         }
 case 2:{
           pss=(list)malloc(LEN);
           insert_student(list pss,list head);
           break;
         
            }
         
 case 3:{ printf("请输入学号");
          scanf("%d",&num);
          delete_student(int num,list head);
          prinf_student(list head);
         
         
         }   
  case 4:{
          exit(0);
             }   
         
            }
 }
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
  
2010-09-09 16:27
江南豪客
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2010-7-29
得分:0 
前几天写的,你运气好,上面有你要的东西。包含了链表创建,排序,删除,插入,打印
但我还没有编译,不过思路应该没错!
2010-09-09 16:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-317402-1-1.html




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

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