m0_75048134 2023-01-10 00:50 采纳率: 100%
浏览 54
已结题

我的switch选项想修改名字的时候不运行了sos

当我想要修改姓名的时候,程序不往下运行了sos
#include <stdio.h>
    struct student{
        int num,age;
        char name[10000];
        char jg;
        char sex;
        char zy;
        char bj;
        char xb;};
int change_a(struct student *p,int n,int num,char a,int chioce);
int main(){
    int n,num,chioce,age,i,pos;
    char a;
    printf("请输入操作学生人数"); 
        scanf("%d",&n); 
        struct student stu[n];
    printf("对应顺序输入以下信息即可\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);
 }
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("修改后的信息如下");
        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:p->name[i]=a;break;
          case 2:p->sex=a;break;
             case 4:p->jg=a;break;
           case 5:p->xb;break;
          case 6:p->bj;break;
        }pos=i;
    }else{
        pos=-1;
    }
    return pos;
}
     
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/260748282376161.png "#left")



可以帮帮我吗谢谢!

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-01-10 10:59
    关注

    修改完善如下,改动处见注释,供参考:

    #include <stdio.h>
    #include <stdlib.h> //修改
    #include <string.h> //修改
    struct student {
        int  num, age;
        char name[32];  //修改
        char jg[16];    //修改
        char sex[10];   //修改
        //char zy;      //修改
        char bj[32];    //修改
        char xb[16];    //修改
    }stu[100];          //修改
    int change_a(struct student* p, int n, int num, char *a, int chioce); //修改
    int main() {
        int n, num, chioce, age, i, pos;
        char a[32];    //修改
        printf("请输入操作学生人数");
        scanf("%d", &n);
        //struct student stu[n];    //修改
        printf("对应顺序输入以下信息即可\n");
        for (i = 0; i < n; i++)
        {
            printf("姓名:");
            scanf("%s", stu[i].name);
            getchar(); //修改
            printf("学号:");
            scanf("%d", &stu[i].num);
            getchar(); //修改
            printf("性别:");
            scanf("%s", stu[i].sex); //scanf("%s", &stu[i].sex);//修改
            getchar(); //修改
            printf("年龄:");
            scanf("%d", &stu[i].age);
            getchar(); //修改
            printf("籍贯:");
            scanf("%s", stu[i].jg); //scanf("%s", &stu[i].jg);//修改
            getchar(); //修改
            printf("系别:");
            scanf("%s", stu[i].xb); //scanf("%s", &stu[i].xb);//修改
            getchar(); //修改
            printf("专业班级:");
            scanf("%s", stu[i].bj); //scanf("%s", &stu[i].bj);//修改
            getchar(); //修改
        }
        printf("请输入修改学生学号:");
        scanf("%d", &num);
        printf("请输入修改学生信息选项\n");
        printf("1.姓名2.性别3.年龄4.籍贯5.系别6.专业班级\n");
        scanf("%d", &chioce); //scanf("%d", chioce); 修改
        printf("请输入新的修改信息:");
        //if (chioce == 3)       //修改
        //    scanf("%d", &age);   //修改
        //else                   //修改
        scanf("%s", a); //scanf("%s", &a); 修改
    
        pos = change_a(stu, n, num, a, chioce);
    
        if (pos == -1)
            printf("无此学号\n");
        else
        {
            printf("修改后的信息如下\n");
            printf("姓名 |学号  |性别   |年龄   |籍贯   |系别   |专业班级\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; //p->name[i] = a;修改
            case 2:strcpy(p->sex , a); break; //p->sex = a;修改
            case 3:p->age = atoi(a);   break; //修改
            case 4:strcpy(p->jg, a);   break; //p->jg = a;修改
            case 5:strcpy(p->xb, a);   break; //p->xb;修改
            case 6:strcpy(p->bj, a);   break; //p->bj;修改
            }
            pos = i;
        }
        else 
            pos = -1;
        return pos;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题