您的位置:首页 > 科技 > IT业 > 【无标题】

【无标题】

2024/12/23 9:23:46 来源:https://blog.csdn.net/picians/article/details/140136411  浏览:    关键词:【无标题】

#include <myhead.h>


typedef struct 
{
  char name[30];
  int id;
  int score;
  int len;

}head,*head_p;

void insert(head_p p,int n)
{
   int i=0;
   while(1)
   {
     printf("请输入第%d个学生姓名\n",i+1);  
     scanf("%s",(p+i)->name);
     printf("请输入第%d个学生学号\n",i+1);  
     scanf("%d",&(p+i)->id); 
     printf("请输入第%d个学生成绩\n",i+1);  
     scanf("%d",&(p+i)->score);
     (p+i)->len=n;
     if(++i==n){return;}
   }
   
}

void show(head_p p)
{
    
  for(int i=0;i<p->len;i++)
  {
      printf("姓名:%s 学号:%d 成绩:%d \n",(p+i)->name,(p+i)->id,(p+i)->score);
  }

}

void del(head_p p,int num)
{
    int n=p->len;
    if(num>n)
    {
      printf("此位置还没有学生登记无法删除\n");
      return;
    }
    for(int i=0;i<n;i++)
    {
        if(i==num-1)
        {
           for(int j=i;j<n;j++)
           {
               if(num==n)
               {
                   for(int k=0;k<n-1;k++)
                   {
                     (p+i)->len-=1;
                   }
                   return;
               }
             strcpy( (p+i)->name,(p+i+1)->name);
             (p+i)->id=(p+i+1)->id;
             (p+i)->score=(p+i+1)->score;

           }

        }
       (p+i)->len-=1;
    }
    
}

void change_n(head_p p,int num,char *data)
{
    int n=p->len;
    if(num>n)
    {
        printf("所在位置没有学生信息无法修改\n");
        return;
    }
    for(int i=0;i<n;i++)
    {
        if(i==num-1)
        {
        strcpy((p+i)->name,data);
         return;
        }
    }
}
void change_i(head_p p,int num,int data)
{
    int n=p->len;
    if(num>n)
    {
        printf("所在位置没有学生信息无法修改\n");
        return;
    }
    for(int i=0;i<n;i++)
    {
        if(i==num-1)
        {
         (p+i)->id=data;
         return;
        }
    }
}
void change_S(head_p p,int num,int data)
{
    int n=p->len;
    if(num>n)
    {
        printf("所在位置没有学生信息无法修改\n");
        return;
    }
    for(int i=0;i<n;i++)
    {
        if(i==num-1)
        {
         (p+i)->score=data;
         return;
        }
    }
}
void see(head_p p,int num)
{
    int n=p->len;
    if(num>n)
    {
        printf("所在位置没有学生信息\n");
        return;

    }
    for(int i=0;i<n;i++)
    {
        if(i==num-1)
        {
      printf("姓名:%s 学号:%d 成绩:%d \n",(p+i)->name,(p+i)->id,(p+i)->score);


        }

    }


}

int main(int argc, const char *argv[])
{
    head stu[100];
    //head_p p=stu;
    printf("请输入要增加学生的个数:\n");
    int n;
    scanf("%d",&n);

    printf("请输入你要增加的学生信息\n");
    insert(stu,n);
    show(stu);
    printf("请问你要删除第几个学生信息\n");
    int num;
    scanf("%d",&num);
    del(stu,num);
    show(stu);
    printf("请问你要修改第几个学生的信息\n");
    int num2;
    scanf("%d",&num2);
    while(getchar()!='\n');
    while(1)
    {
        while(getchar()!='\n');
        printf("请输入你要修改的信息:N 名字,I 学号,S 成绩,Q修改完成,B不修改\n");
        char str;
        char name2[30];
        int id2,sco;
        scanf("%c",&str);
        switch(str)
        {
            case 'N':
                  printf("请输入新的名字\n");
                   scanf("%s",name2);
                 change_n(stu,num2,name2); break;
            case 'I': 
                    printf("请输入新的学号\n");
                    scanf("%d",&id2);
                    change_i(stu,num2,id2);break;
            case 'S': 
                    printf("请输入新的成绩\n");
                    scanf("%d",&sco);
                    change_S(stu,num2,sco);break;
            default :
                    printf("输入错误,请重新输入\n");break;
        }
        if(str=='Q'|str=='B')break;


    }
   show(stu);
   printf("请输入你要查看的学生信息位置\n");
   int num3;
   scanf("%d",&num3);
   see(stu,num3);
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com