标题:求助 编译有问题 哪位大神教教我怎么改!!
取消只看楼主
bateshi996
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-12-20
 问题点数:0 回复次数:1 
求助 编译有问题 哪位大神教教我怎么改!!
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define MaxSize 100
typedef struct
{   char num[30];          //考号
    char name[30];         //名字
    char sex[30];         //性别
    char exam[30];          //考试类别
    char jg[30];             //籍贯
    char age[30];        //年龄
}ElemType;




typedef struct
{
    ElemType data[MaxSize],data1[MaxSize],mac[MaxSize],hy[MaxSize];
       int length;//记录一门考试有多少人
    int length2; //记录一个考生报考的门数
    int number;   //记录考试种类
} SqList;




void ListAdd(SqList *&L)                               //添加考生信息
{   int a=0,b=0,c=0,y=0;
    printf("请输入考生信息!\n");
    printf("考号     姓名    性别    年龄     考试类别    籍贯\n");
    scanf("%s %s %s %s %s %s",L->data[L->length].num,L->data[L->length].name,L->data[L->length].sex,L->data[L->length].age,L->data[L->length].exam,L->data[L->length].jg);
    printf("\n");
    for(int i=0;i<L->length;i++)
    {
        if(strcmp(L->data[i].num,L->data[L->length].num)==0)
        {
            
            for(int j=0;j<L->length2;j++)
            {
                if(strcmp(L->mac[j].exam,L->data[L->length].exam)==0)
                {
                    a=1;b=1;break;
                }
            }
            if(b==0)
            {strcpy(L->mac[L->length2].num,L->data[L->length].num);   
            strcpy(L->mac[L->length2].jg,L->data[L->length].jg);
            strcpy(L->mac[L->length2].name,L->data[L->length].name);
            strcpy(L->mac[L->length2].sex,L->data[L->length].sex);
            strcpy(L->mac[L->length2].age,L->data[L->length].age);
            strcpy(L->mac[L->length2].exam,L->data[L->length].exam);                    
            printf("报名考试成功!\n");
            c=1;
            while(y<L->length2&&strcmp(L->mac[y].exam,L->data[L->length].exam)!=0)
            {
                y++;
            }
            if(y>=L->length2)
            {
               
                strcpy(L->hy[L->number].exam,L->data[L->length].exam);
                    L->number++;
            }
            L->length2++;
            }
        }
    }
    if(a==1)
    {
        printf("你已经报名了这门考试。\n");
    }
    if(a==0&&c==0)
    {
        strcpy(L->mac[L->length2].num,L->data[L->length].num);   
        strcpy(L->mac[L->length2].jg,L->data[L->length].jg);
        strcpy(L->mac[L->length2].name,L->data[L->length].name);
        strcpy(L->mac[L->length2].sex,L->data[L->length].sex);
        strcpy(L->mac[L->length2].age,L->data[L->length].age);
        strcpy(L->mac[L->length2].exam,L->data[L->length].exam);
        y=0;
        while(y<L->length2&&strcmp(L->mac[y].exam,L->data[L->length].exam)!=0)
        {
                y++;
        }
        if(y>=L->length2)
        {
            strcpy(L->hy[L->number].exam,L->data[L->length].exam);
            L->number++;
        }   
        L->length2++;
        L->length++;
        printf("报名考试成功!\n");
   
    }
}





void ListChange(SqList *&L)                                      //修改考生信息
{
     printf("请输入你要修改考生的考号:\n");
     char num[11];
     scanf("%s",&num);
     printf("你要修改的考生信息如下:\n");
     int i=0;
     while(i<L->length&&strcmp(L->data[i].num,num)!=0)
        i++;
     if(i>=L->length)
         printf("表内没有此考生!\n");
     else
     {
          printf("考号:%s\n",L->data[i].num);
          printf("姓名:%s\n",L->data[i].name);
          printf("性别:%s\n",L->data[i].sex);
          printf("年龄:%s\n",L->data[i].age);
          printf("籍贯:%s\n",L->data[i].jg);
          printf("参加的考试有:");
          for(int j=0;j<L->length2;j++)
          {
              if(strcmp(L->mac[j].num,L->data[i].num)==0)
              {
                  printf("%s,",L->mac[j].exam);
              }
          }
          printf("\n");
          printf("请输入考生信息!\n");
          printf("考号     姓名    性别    年龄     籍贯\n");
          scanf("%s %s %s %s  %s",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg);
          for(int q=0;q<L->length2;q++)
          {strcpy(L->mac[L->length2].num,L->data[i].num);   
          strcpy(L->mac[L->length2].jg,L->data[i].jg);
        strcpy(L->mac[L->length2].name,L->data[i].name);
        strcpy(L->mac[L->length2].sex,L->data[i].sex);
        strcpy(L->mac[L->length2].age,L->data[i].age);}
          printf("\n");
          int a=0,b=0,c;
          printf("报名参加的考试有:");
          while(a==0)
          {for(int w=0;w<L->length2;w++)
          {
              b++;
              if(strcmp(L->mac[w].num,L->data[w].num)==0)
              {
                  scanf("%s,",L->mac[w].exam);
              }
              printf("还要继续报名其他考试吗? 1:继续 2:不继续");
              scanf("%d",&c);
              if(c==1)
              {
                  a=0;
              }
              if(c==2)
              {
                 a=1; break;
              }
          }
           printf("\n");
          }
          if(a==1)
          {
              for(int v=b+1;v<L->length2;v++)
              {
                  if(strcmp(L->mac[v].num,num)==0)
                  {
                      int j;
                      for (j=v;j<L->length2-1;j++)
                      {
                          L->mac[j]=L->data[j+1];                        
                      }  L->length2--;
                  }
              }
          }
     }
         printf("修改考生信息成功!\n");
 }





void ListDrop(SqList *&L)                //删除考生信息
{
     printf("请输入你要删除考生的考号!\n");
     char num[11];
     scanf("%s",&num);
     int i=0;
     while(i<L->length&&strcmp(L->data[i].num,num)!=0)
         i++;
     printf("该考生已被删除!\n");
     if(i>=L->length)
         printf("表内没有此考生!\n");
     else
     {
         int j;
     for (j=i;j<L->length-1;j++)
        L->data[j]=L->data[j+1];
       L->length--;
     }
}





void ListPaixu(SqList *&L)   //排序
{
       int num,i;
    printf("1:考号 \n2:考试类别 \n");
    printf("请选择你想要进行排序的方式:");
    scanf("%d",&num);
    printf("\n");
    if(num==1)
    {
        for(i=0;i<L->length-1;i++)                //冒泡法排序
        {     
         for(int j=0;j<L->length-1-i;j++)
         {
             if(strcmp(L->data[j].num,L->data[j+1].num)>0)
             {
                 strcpy(L->data1[j].num,L->data[j].num);
                 strcpy(L->data[j].num,L->data[j+1].num);
                 strcpy(L->data[j+1].num,L->data1[j].num);
                 strcpy(L->data1[j].name,L->data[j].name);
                 strcpy(L->data[j].name,L->data[j+1].name);
                 strcpy(L->data[j+1].name,L->data1[j].name);
                 strcpy(L->data1[j].sex,L->data[j].sex);
                 strcpy(L->data[j].sex,L->data[j+1].sex);
                 strcpy(L->data[j+1].sex,L->data1[j].sex);
                 strcpy(L->data1[j].age,L->data[j].age);
                 strcpy(L->data[j].age,L->data[j+1].age);
                 strcpy(L->data[j+1].age,L->data1[j].age);   
                 strcpy(L->data1[j].exam,L->data[j].exam);
                 strcpy(L->data[j].exam,L->data[j+1].exam);
                 strcpy(L->data[j+1].exam,L->data1[j].exam);
                 strcpy(L->data1[j].jg,L->data[j].jg);
                 strcpy(L->data[j].jg,L->data[j+1].jg);
                 strcpy(L->data[j+1].jg,L->data1[j].jg);
             }
         }
    }
   
      for (i=0;i<L->length;i++)
      {
          printf("考号:%s\n",L->data[i].num);
          printf("姓名:%s\n",L->data[i].name);
          printf("性别:%s\n",L->data[i].sex);
          printf("年龄:%s\n",L->data[i].age);
          printf("籍贯:%s\n",L->data[i].jg);
          printf("参加的考试有:");
          for(int j=0;j<L->length2;j++)
          {
              if(strcmp(L->mac[j].num,L->data[i].num)==0)
              {
                  printf("%s,",L->mac[j].exam);
              }
          }
      printf("\n");
      }
 }
    if(num==2)
    {
        
        for(i=0;i<L->length-1;i++)
        {
           for(int j=0;j<L->length-i-1;j++)
           {      
              if(strcmp(L->data[j].exam,L->data[j+1].exam)>0)
              {
                 strcpy(L->data1[j].num,L->data[j].num);
                 strcpy(L->data[j].num,L->data[j+1].num);
                 strcpy(L->data[j+1].num,L->data1[j].num);
                 strcpy(L->data1[j].name,L->data[j].name);
                 strcpy(L->data[j].name,L->data[j+1].name);
                 strcpy(L->data[j+1].name,L->data1[j].name);
                 strcpy(L->data1[j].sex,L->data[j].sex);
                 strcpy(L->data[j].sex,L->data[j+1].sex);
                 strcpy(L->data[j+1].sex,L->data1[j].sex);
                 strcpy(L->data1[j].age,L->data[j].age);
                 strcpy(L->data[j].age,L->data[j+1].age);
                 strcpy(L->data[j+1].age,L->data1[j].age);   
                 strcpy(L->data1[j].exam,L->data[j].exam);
                 strcpy(L->data[j].exam,L->data[j+1].exam);
                 strcpy(L->data[j+1].exam,L->data1[j].exam);
                 strcpy(L->data1[j].jg,L->data[j].jg);
                 strcpy(L->data[j].jg,L->data[j+1].jg);
                 strcpy(L->data[j+1].jg,L->data1[j].jg);
              }
            for(int t=0;t<L->length-1;t++)
           {
                 if(strcmp(L->data[t].exam,L->data[t+1].exam)==0)
                 {
                       if(strcmp(L->data[t].num,L->data[t+1].num)>0)
                       {
                                  strcpy(L->data1[t].num,L->data[t].num);
                                  strcpy(L->data[t].num,L->data[t+1].num);
                                  strcpy(L->data[t+1].num,L->data1[t].num);
                                  strcpy(L->data1[t].name,L->data[t].name);
                                  strcpy(L->data[t].name,L->data[t+1].name);
                                  strcpy(L->data[t+1].name,L->data1[t].name);
                                  strcpy(L->data1[t].sex,L->data[t].sex);
                                  strcpy(L->data[t].sex,L->data[t+1].sex);
                                  strcpy(L->data[t+1].sex,L->data1[t].sex);
                                  strcpy(L->data1[t].age,L->data[t].age);
                                  strcpy(L->data[t].age,L->data[t+1].age);
                                  strcpy(L->data[t+1].age,L->data1[t].age);   
                                  strcpy(L->data1[t].exam,L->data[t].exam);
                                  strcpy(L->data[t].exam,L->data[t+1].exam);
                                  strcpy(L->data[t+1].exam,L->data1[t].exam);
                                  strcpy(L->data1[t].jg,L->data[t].jg);
                                  strcpy(L->data[t].jg,L->data[t+1].jg);
                                  strcpy(L->data[t+1].jg,L->data1[t].jg);
                       }     
                 }
            }
    }
    }   
    for (i=0;i<L->length;i++)
      {
          printf("考号:%s\n",L->data[i].num);
          printf("姓名:%s\n",L->data[i].name);
          printf("性别:%s\n",L->data[i].sex);
          printf("年龄:%s\n",L->data[i].age);
          printf("籍贯:%s\n",L->data[i].jg);
          printf("参加的考试有:");
          for(int j=0;j<L->length2;j++)
          {
              if(strcmp(L->mac[j].num,L->data[i].num)==0)
              {
                  printf("%s,",L->mac[j].exam);
              }
          }
      printf("\n");
      }
}
}





void ListSearch(SqList *&L)                              //查找考生信息
{
    int num;
    printf("1:考号 \n2:考试类别 \n");
    printf("请选择你想要进行查询考生的方式:");
    scanf("%d",&num);
    printf("\n");
    if(num==1)
    {
        printf("请输入你想要查找考生的考号:");
    char num[11];
    scanf("%s",&num);
    int i=0;
     while(i<L->length&&strcmp(L->data[i].num,num)!=0)
         i++;
     if(i>=L->length)
         printf("表内没有此考生!\n");
     else
     {
          printf("考号:%s\n",L->data[i].num);
          printf("姓名:%s\n",L->data[i].name);
          printf("性别:%s\n",L->data[i].sex);
          printf("年龄:%s\n",L->data[i].age);
          printf("籍贯:%s\n",L->data[i].jg);
          printf("参加的考试有:");
          for(int j=0;j<L->length2;j++)
          {
              if(strcmp(L->mac[j].num,L->data[i].num)==0)
              {
                  printf("%s,",L->mac[j].exam);
              }
          }
      printf("\n");
     }
    }
    if(num==2)
    {
       printf("请输入你想要查找的考试类别:");
        char exam[30];
        scanf("%s",&exam);
        int i=0,a=0;
        for(i;i<L->length2;i++)
        {
            if(strcmp(L->mac[i].exam,exam)==0)
                a++;
        }
        if(a==0)
        {
            printf("没有学生参与%s考试\n",exam);
        }
         else
         {
             printf("共有%d个学生报名参加%s考试,信息如下:\n",a,exam);
            printf("考号     姓名    性别    年龄     考试类别    籍贯\n");
            for(int o=0;o<L->length2;o++)
            {
            if(strcmp(L->mac[o].exam,exam)==0)   
            {
            printf("%s\t%s\t%s\t%s\t%s\t%s",L->mac[o].num,L->mac[o].name,L->mac[o].sex,L->mac[o].age,L->mac[o].exam,L->mac[o].jg);
            printf("\n");
            }
            }
         }
    }
}





void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList));         
    L->length=0;           //用来存储人数
    L->length2=0;         //存储人次
    L->number=0;
}



int ListEmpty(SqList *L)
{
    return(L->length==0);
}




void DispList(SqList *&L)                             //输出考生信息
{
   
      int i;
      if(ListEmpty(L))
      printf("表内没有任何考生的信息!");
      for (i=0;i<L->length;i++)
     printf("%s\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].exam,L->data[i].jg);
      printf("\n");
}





void ListTongji(SqList *&L)
{
    int i,j,a=0;
    printf("共有%d个学生报名考试!\n",L->length);
    printf("每个学生报名考试种类数量如下:\n");
    for (i=0;i<L->length;i++)
      {
          printf("考号:%s\n",L->data[i].num);
          printf("姓名:%s\n",L->data[i].name);
          printf("性别:%s\n",L->data[i].sex);
          printf("年龄:%s\n",L->data[i].age);
          printf("籍贯:%s\n",L->data[i].jg);
          printf("参加的考试有:");
          for(j=0;j<L->length2;j++)
          {
              if(strcmp(L->mac[j].num,L->data[i].num)==0)
              {
                  printf("%s,",L->mac[j].exam);
                  a++;
              }
          }
          printf("共报名参加%d门考试",a);
          a=0;
      printf("\n");
      }
    printf("共有%d门考试有同学报名。\n",L->number);
    printf("每种类别考试人数如下:\n");
    for(i=0;i<L->number;i++)
    {
        int sum=0;
        for(j=0;j<L->length2;j++)
        {        
            if(strcmp(L->hy[i].exam,L->mac[j].exam)==0)
            {
                sum++;
            }
        }
        printf("报名参加%s考试的考生有%d名。\n",L->hy[i].exam,sum);
    }
}






void main()
{
   SqList *L;
   InitList(L);
   int num;
    while(1)
    {
    printf("◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇\n");
    printf("\t              欢迎进入考生管理系统!                     \t \n");
    printf("\t       1.报考信息录入      2.考生信息修改             \t \n");
    printf("\t       3.考生信息删除      4.考生信息查询            \t \n");
    printf("\t       5.考生信息统计      6.考生信息排序     \t\n");
    printf("\t       7.退出系统               \t\n");
    printf("◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    printf("请选择你要进行的操作:");
    scanf("%d",&num);
    switch(num)
    {
        case 1:ListAdd(L);break;
        case 2:ListChange(L);break;                    
        case 3:ListDrop(L);break;                        
        case 4:ListSearch(L);break;  
        case 5:ListTongji(L);break;
        case 6:ListPaixu(L);break;
        case 7:return;
        default:{printf("操作错勿,请重新输入!\n");}   
    }
    }
}
搜索更多相关主题的帖子: printf strcpy num data mac 
2019-12-21 20:46
bateshi996
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-12-20
得分:0 
这个代码有个错误,怎么改啊!还有如何加入栈或队列进去
2019-12-21 20:48



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




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

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