学生成绩系统,运行不了,什么地方错误了


#include  <stdio.h>
#include <string.h>
#include  <stdlib.h>
//定义学生结构体 
struct   student 
{
     char* name[100];//姓名
     int id;//学号 
     int cj; //成绩
    

};

int   n=0;  //记录数据组中当前有多少个学生  

//设计初始化学生信息接口 
void  init_stu(struct   student  *p,char *name,int id,short cj)
{
    p=(struct  student*)malloc(n*sizeof(struct   student));
    strcpy(p->name,name);
    p->id=id;
    p->cj=cj;
    
    
}

//显示所有学生信息 
void  show_all(struct   student  *p,int len)
{
            printf("姓名\t学号\t成绩\n");
            for (int i=0;i<len;i++)
            printf("%s\t%d\t%f\n",p[i].name,p[i].id,p[i].cj);
}

//删除学生成绩 
void  del_stu(struct   student  *p,char *name)
{
         p->cj=0; 
         
          

}

//修改学生成绩 
void  up_stu(struct   student  *p,char *name)
{
       int i=0;
       printf("请输入修改后的学生成绩");
       scanf("%d",&i);
       p->cj=i;

}

//查找某个成绩的学生 
void  find_stu(struct   student  *p,int  cj)
{
      printf("姓名:%s\n",p->name);
      printf("学号:%d\n",p->id);
      printf("成绩:%d\n",p->cj);


}

//求学生的平均成绩  
int  all_stu(struct   student  *p)
{       
        int j=0;
        j=p->cj;
        


}

//根据成绩显示从 大 到 小显示所成绩  
void  show_sort(struct   student  *p,int Counts)
{
          for(int i=0;i<Counts-1;i++)
                   {
                       for(int j=0;i<Counts-i;j++)
                       {
                           if(p[j].cj>p[j+1].cj)
                           {
                              struct student temp;
                              temp.cj=p[j+1].cj;
                              temp.id=p[j+1].id;
                              temp.name=p[j+1].name;
                               
                              p[j+1].cj=p[j],cj;
                               p[j+1].id=p[j],id;
                              p[j+1].name=p[j],name;
                               
                              p[j].cj=temp.cj;
                              p[j].id=temp.id;
                              p[j].name=temp.name;
                           }
                           
                       }
                       for (int i=0;i<Counts-1;i++)
                       {
                           printf("%d %d %s",p[j].cj,p[j].id,p[j].name);
                           
                           
                       }
                   }
            



}



int main()
{ 

     //学生结构体数组  
      struct   student   people[100]; //一共可以保存 100 个学生成绩 

    while (1)
    {
        printf("1.插入学生  2.显示所有学生  3.删除学生  4.修改学生 5.查找学生 6.显示平均成绩 7.成绩排序\n");

         int a=0; 
         scanf("%d",&a);
         while (getchar() != '\n'); //清空输入缓存区

        switch (a)
        {
            case 1:
            {  char a[100];
               int   b;
               float c;
               printf("插入学生的姓名,学号,成绩\n");
               scanf("%s %d %d",a,&b,&c);
               n++;
               printf("n=%d\n",n);
               for("int i=0;i<n;i++")
               {
               init_stu(&people[i],a,b,c);
               }
               break;
            }

            case 2:
            {
               printf("显示所有学生\n");
               show_all(p,n);
               
            }
             break;
             
            case 3:
            {
                int i,j;
                printf("请输入你要删除成绩的学生学号:");
                 scanf("%d",&j);
                 for(i=0;i<n;i++)
            {
                 if(j==people[i].id)
                {
                   del_stu(&people[i]);
              
                }
               break;
               
               
               case 4:
               {
                   int i,j;
                printf("请输入要修改成绩学生的学号:\n");
                 
                 scanf("%d",&i);
                
                for(j=0;j<n;j++)
                {    
                    if(i==people[j].id)
                    {
                       up_stu(&people[j]);
                        
                    }    
                }
                break;
               }   
                case 5:
                {
                    int i,j;
                printf("请输入要查找的学生成绩:\n");
                scanf("%d",&i);
                
                for(j=0;j<n;j++)
                {    
                    if(i==people[j].id)
                    {
                       find_stu(&people[j]);
                        
                    }    
                }
                    break;
                }
                
                case 6:
                {
                    int i,j;
                    int sum=0;
                    for(i=0,i<n;i++)
                    {
                        j=all_stu(&people[i])
                    sum+=j;
                        
                    }
                    printf("学生的平均成绩是%d\n",sum);
                }                
                     break;             
               
               case 7:
               {
                  int counts;
                  scanf("%d",counts);
                  show_sort(people,counts);
                  break;
                   
               }
            default:
            {
                }
                printf("输入错误\n");
                break;

            }
        }



    }
    




}

具体错误是什么?

修改如下,供参考:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
//定义学生结构体 
struct   student
{
    char   name[100];//姓名
    int    id;//学号 
    float  cj; //成绩

};
int   n = 0;  //记录数据组中当前有多少个学生  
//设计初始化学生信息接口 
void  init_stu(struct   student* p, char* name, int id, float cj)
{
    //p = (struct student*)malloc(n * sizeof(struct student));
    strcpy(p->name, name);
    p->id = id;
    p->cj = cj;
}
//显示所有学生信息 
void  show_all(struct student* p, int len)
{
    printf("姓名\t学号\t成绩\n");
    for (int i = 0; i < len; i++)
        printf("%s\t%d\t%f\n", p[i].name, p[i].id, p[i].cj);
}
//删除学生成绩 
void  del_stu(struct student* p)
{
    p->cj = 0;

}
//修改学生成绩 
void  up_stu(struct student* p)
{
    float i = 0;
    printf("请输入修改后的学生成绩");
    scanf("%f", &i);
    p->cj = i;
}
//查找某个成绩的学生 
void  find_stu(struct student* p)
{
    printf("姓名:%s\n", p->name);
    printf("学号:%d\n", p->id);
    printf("成绩:%f\n", p->cj);

}
//求学生的平均成绩  
float  all_stu(struct student* p)
{
    float j = 0;
    j = p->cj;
    return j;
}
//根据成绩显示从 大 到 小显示所成绩  
void  show_sort(struct student* p, int Counts)
{
    for (int i = 0; i < Counts - 1; i++)
    {
        for (int j = 0; j < Counts - i-1; j++)
        {
            if (p[j].cj > p[j + 1].cj)
            {
                struct student temp;
                temp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = temp;

                //temp.cj = p[j + 1].cj;
                //temp.id = p[j + 1].id;
                //temp.name = p[j + 1].name;

                //p[j + 1].cj = p[j].cj;
                //p[j + 1].id = p[j].id;
                //p[j + 1].name = p[j], name;

                //p[j].cj = temp.cj;
                //p[j].id = temp.id;
                //p[j].name = temp.name;
            }
        }
    }
    for (int i = 0; i < Counts ; i++)
        printf("%f %d %s\n", p[i].cj, p[i].id, p[i].name);
}

int main()
{
    //学生结构体数组  
    struct student people[100]; //一共可以保存 100 个学生成绩 
    while (1)
    {
        printf("1.插入学生  2.显示所有学生  3.删除学生  4.修改学生 5.查找学生 6.显示平均成绩 7.成绩排序\n");
        int a = 0;
        scanf("%d", &a);
        while (getchar() != '\n'); //清空输入缓存区
        switch (a)
        {
           case 1:
           {     char  a[100];
                 int   b;
                 float c;
                 printf("插入学生的姓名,学号,成绩\n");
                 scanf("%s %d %f", a, &b, &c);
                 printf("n=%d\n", n);
                 init_stu(&people[n], a, b, c);
                 n++;
                 break;
           }
          case 2:
          {
                printf("显示所有学生\n");
                show_all(people, n);
                break;
          }
          case 3:
          {
             int i, j;
             printf("请输入你要删除成绩的学生学号:");
             scanf("%d", &j);
             for (i = 0; i < n; i++)
             {
                 if (j == people[i].id)
                 {
                     del_stu(&people[i]);
                 }
             }
             break;
          }
         case 4:
         {
            int i, j;
            printf("请输入要修改成绩学生的学号:\n");
            scanf("%d", &i);
            for (j = 0; j < n; j++)
            {
                if (i == people[j].id)
                {
                    up_stu(&people[j]);
                }
            }
            break;
         }
         case 5:
         {
            int i, j;
            printf("请输入要查找成绩学生的学号:\n");
            scanf("%d", &i);
            for (j = 0; j < n; j++)
            {
                if (i == people[j].id)
                {
                    find_stu(&people[j]);
                }
            }
            break;
         }
         case 6:
         {
            int i;
            float sum = 0,j;
            for (i = 0; i < n; i++)
            {
                j = all_stu(&people[i]);
                sum += j;
            }
            printf("学生的平均成绩是%f\n", sum/n);
            break;
         }
         case 7:
         {
            int counts;
            scanf("%d", &counts);
            show_sort(people,counts);
            break;
         }
         default:
            printf("输入错误\n");
            break;
        }
    }
}