m0_75048134 2023-01-25 22:01 采纳率: 100%
浏览 61
已结题

c语言不运行sos辛苦大家了!

请问为什么不运行呀
#include<stdio.h>
#include<string.h>
struct student{
        int num,age;
        char name[64];
        char jg[20];
        char sex[20];
        char zy[20];
        char bj[20];
        char xb[20];};
int change_a(struct student *p,int n,int num,char *a,int chioce);
void input(struct student stu[]);//普通填写信息 
void select(struct student stu[],int option,int num);//选择功能 
void add(struct student stu[],int num);//添加信息 
void change(struct student stu[],int num);//修改信息
void search(struct student stu[],int num);//查找
void delect(struct student stu[],int num);//struct student *p*/);//删除信息 

void array(); 
    
int main(void)
{
  int option,num;
  struct student stu[100];
    printf("欢迎使用学生学籍管理系统"); 
    input(stu);
    
    printf("[1]添加学生信息\n");
    printf("[2]修改学生信息\n");
    printf("[3]查找学生信息\n ");
    printf("[4]删除学生信息\n"); 
    printf("[5]打出文件\n");
    printf("[6]退出\n");
    while(1){
        printf("请输入将要应用的功能:\n");
        scanf("%d",&option);
        if(option<1||option>5)
        break;
        printf("请输入所操作学生学号:");
        scanf("%d",&num); 
        select(stu,option,num); 
        printf("\n");
        
    } 
    printf("感谢应用本系统"); 
    return 0;
}


void input(struct student stu[])      //填写信息 
{
    int n,i;
    printf("请输入操作学生人数"); 
        scanf("%d",&n); 
    
    printf("对应顺序输入以下信息即可\n");
//    printf("姓名\t|学号\t|性别\t|年龄\t|籍贯\t|系别\t|专业班级\n");
 for(i=0;i<n;i++){
            printf("姓名:");
            scanf("%s",stu[i].name);
            printf("学号:");
            scanf("%d",&stu[i].num);
               printf("性别:");
            scanf("%s",stu[i].sex);
            printf("年龄:");
            scanf("%d",&stu[i].age);
               printf("籍贯:");
            scanf("%s",&stu[i].jg);    
            printf("系别:");
            scanf("%s",&stu[i].xb);
               printf("专业班级:");
            scanf("%s",&stu[i].bj);
            
             }
}

void select(struct student stu[],int option,int num)
{
    switch(option)
    {
        case 1:
            add(stu,num);
            break;
        case 2:
            change(stu,num);
            break;
        case 3:
            search(stu,num);
            break;
        case 4:
            delect(stu,num);
        /*case 5:
            file()    */
    }
} 


void add(struct student stu[],int num)
{
    int i,j,n;
    for(i=0;i<n;i++)
    {
        if(num<stu[i].num)
        break;
    }
    for(j=n-1;j>=i;j--)
    {
        stu[j+1]=stu[j];
    }
        stu[i].num=num;
         printf("姓名:");
            scanf("%s",stu[i].name);
           /* printf("学号:");
            scanf("%d",&stu[i].num);*/
               printf("性别:");
            scanf("%s",&stu[i].sex);
            printf("年龄:");
            scanf("%d",&stu[i].age);
               printf("籍贯:");
            scanf("%s",&stu[i].jg);    
            printf("系别:");
            scanf("%s",&stu[i].xb);
               printf("专业班级:");
            scanf("%s",&stu[i].bj);
        n++;
        
}


void change(struct student stu[],int num)
{  
    int n,chioce,age,i,pos;
    char a[20];
    printf("请输入修改学生学号:");
    scanf("%d",&num);
    printf("请输入修改学生信息选项\n");
    printf("1.姓名2.性别3.年龄4.籍贯5.系别6.专业班级\n");
    scanf("%d",&chioce);
    printf("请输入新的修改信息:");
    if(chioce==3)
    scanf("%d",&age);
    else
    scanf("%s",a);
     
    pos=change_a(stu,n,num,a,chioce);
    
    if(pos==-1)
    printf("无此学号\n");
    else
    {
        printf("修改后的信息如下\n");
        printf("姓名\t|学号\t|性别\t|年龄\t|籍贯\t|系别\t|专业班级\n");
        printf("%s\t%d\t%s\t%d\t%s\t%s\t%s\t",stu[pos].name,stu[pos].num,stu[pos].sex,stu[pos].age,stu[pos].jg,stu[pos].xb,stu[pos].bj);
    }
}



int change_a(struct student *p,int n,int num,char *a,int chioce)
{
    int i,pos;
    for(i=0;i<n;i++,p++)
    {
        if(p->num==num)
        break;
    }
    if(i<n)
    {
        switch(chioce)
        {
             case 1:strcpy(p->name,a);break;
          case 2:strcpy(p->sex,a);break;
             case 4:strcpy(p->jg,a);break;
           case 5:strcpy(p->xb,a);break;
          case 6:strcpy(p->bj,a);break;
        }pos=i;
    }else
    {
        pos=-1;
    }
    return pos;
}

void search(struct student stu[],int num)
{
    int i,n;
    for(i=0;i<n;i++)
    {
     if(num==stu[i].num)
     {
        printf("姓名\t|学号\t|性别\t|年龄\t|籍贯\t|系别\t|专业班级\n");
        printf("%s\t%d\t%s\t%d\t%s\t%s\t%s\t",stu[i].name,stu[i].num,stu[i].sex,stu[i].age,stu[i].jg,stu[i].xb,stu[i].bj);
     }
     else
     printf("没有此学号"); 
    }

}

void delect(struct student stu[],int num)
{
   
    int i,n,j=0; 
//    struct student *p=stu[i];
    for(i=0;i<n;i++)
    {
      // if(p->num==num)
      if(stu[i].num==num)
       {
           while(i<n)
          
         {

            stu[i]=stu[i+1];
           
            n--;
            break; 
       }
        
            
      }else
        
             printf("查无此号!");
        
        }
    
        
     }
    





马上开学,程序还没写完sos

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-01-25 22:22
    关注

    粗看两个地方问题:第5行 char name[10000]; 名字的数组太大了,不需要这么大,改为:char name[64]; 足够了。
    第24行:struct student stu[10000000]; 结构体数组 stu[] 太大了,应改为:struct student stu[100];

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 修改了问题 1月26日
  • 修改了问题 1月25日
  • 展开全部

悬赏问题

  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析