注册 登录
编程论坛 C++教室

版主,我还是改了啊!可是还是不对啊?

AQ2130062 发布于 2016-05-12 22:23, 3686 次点击
score *creatlink()
 {
     score*head;
     score *pl,*p2,*p3,*max;
     int i,j;
     float fen;
     char t[10];
     n=0;
     p1=p2=p3=(score *)malloc(LEN);head=p3;
     printf("请输入学生资料, 输0退出!\n");
 repeat1: printf("请输入学生学号(学号应大于0): ");
          scanf("%d",&p1->number);
          while(p1->number<0)
          {
              getchar();
              printf("输入错误,新重新输入学生学号:");
                  scanf("%d",&p1->number):}
          if(p1->number==0)
              goto end;
          else
          {
              p3=head;
              if(n>0)
              {for(i=0;i<n;i++)
              {if(p1->number!=p3->number)
              p3=p3->next;
              else
              {printf("学号重复,请重输!\n");
              goto repeat1;
              }
              }
              }
          }
          printf("请输入学生姓名: ");
              scanf("%s",&p1->name);
              printf("请输入语文成绩(0~100): ");
              scanf("%f",&p1->chinese);
              while(p1->chinese<0||p1->chinese>100)
              {
                  gerchar();
                  printf("输入错误, 请重新输入语文成绩");
                  scanf("%f",&p1->chinese);}
              printf("请输入数学成绩(0~100): ");
              scanf("%f",&p1->mathmatic);
              while(p1->mathmatic<0||p1->mathmatic>100)
              {
                  getchar();
                  printf("输入错误, 请重新输入数学成绩");
                  scanf("%f",&p1->mathmatic);}
              printf("请输入英语成绩(0~100): ");
              scanf("%f",&p1->english);
              while(p1->english<0||p1->english>100)
              {
                  getchar();
                  printf("输入错误, 请重新输入英语成绩");
                  scanf("%f",&p1->english);}
              head=NULL;
              while(p1->number!=0)
              {
                  n=n+1;
                  if(n==1)
                      head=p1;
                  else
                      p2->next=p1;
                  p2=p1;
                  p1=(score *)malloc(LEN);
                      printf("请输入学生资料, 输0退出!\n");
 repeat2:printf("请输入学生学号(学号应大于0): ");
         scanf("%d",&p1->number);
         while(p1->number<0)
         {
             getchar();
             printf("输入错误,请重新输入学生学号:");
             scanf("%d",&p1->number);}
         if(p1->number==0)
             goto end;
         else
         {
             p3=head;
             if(n>0)
             {for(i=0;i<n;i++)
             {if(p1->number!=p3->number)
             p3=p3->next;
             else
             {
                 printf("学号重复,请重输!\n");
                 goto repeat2;
             }
             }
             }
         }
         printf("请输入学生姓名: ");
         scanf("%s",&p1->name);
         printf("请输入语文成绩(0~100): ");
         scanf("%f",&p1->chinese);
         while(p1->chinese<0||p1->chinese>100)
         {
         getchar();
             printf("输入错误, 请重新输入语文成绩");
             scanf("%f",&p1->chinese);}
             printf("请输入数学成绩(0~100): ");
             scanf("%f",&p1->mathmatic);
             while(p1->mathmatic<0||p1->mathmatic>100)
             {
                 getchar();
                 printf("输入错误, 请重新输入数学成绩");
                 scanf("%f",&p1->mathmatic);}
                 printf("请输入英语成绩(0~100): ");
                 scanf("%f",&p1->english);
                 while(p1->english<0||p1->english>100)
                 {getchar();
                 printf("输入错误, 请重新输入英语成绩");
         scanf("%f",&p1->english);}
              }
 end: p1=head;
      p3=p1;
      for(i=1;i<n;i++)
      {
          for(j=i+1;j<=n;j++)
          {
              max=p1;
              p1=p1->next;
              if(max->number>p1->number)
                  {
                  k=max->number;
                  max->number=p1->number;
                  p1->number=k;
                  strcpy(t,max->name);
                  strcpy(max->name,p1->name);
                  strcpy(p1->name,t);
                  fen=max->chinese;
                  max->chinese=p1->chinese;
                  p1->chinese=fen;
                  fen=max->mathmatic;
                  max->mathmatic=p1->mathmatic;
                  p1->mathmatic=fen;
                  fen=max->english;
                  max->english=p1->english;
                  p1->english=fen;
              }
          }
          max=head;p1=head;
      }
      p2->next=NULL;
      printf("输入的学生数为:%d个!\n",n);
      return(head);
      }
1 回复
#2
AQ21300622016-05-14 22:36
求指教啊
1