m0_68485260 2022-04-11 18:12 采纳率: 50%
浏览 50
已结题

为什么我选了删除功能会自动退出系统而不会回到主菜单


#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>
#define   MAX_LEN  10                        /* 字符串最大长度 */
#define   STU_NUM 30                       /* 最多的学生人数 */
 /* 最多的考试科目数 */
typedef struct student
{
    long num;                        /* 每个学生的学号 */
    char name[MAX_LEN];                /* 每个学生的姓名 */
        /* 每个学生COURSE_NUM门功课的成绩 */
                       /* 每个学生的平均成绩 */
}STU;
int   Menu(void);
void  ReadScore(STU stu[], int n);
void  PrintScore(STU stu[], int n);
int main()
{
    char  ch;
    int   n = 0;  /* 学生人数为n,课程门数为m */
    STU   stu[STU_NUM];
    printf("Input student number(n<=%d):", STU_NUM);
    scanf("%d", &n);
    while (1)
    {
        ch = Menu();                        /* 显示菜单,并读取用户输入 */
        switch (ch)
        {
        case 1:ReadScore(stu, n);
            break;
case 12: del(stu,n);
break;
        case 11:PrintScore(stu, n);
            break;
        case 0: printf("End of program!");
            exit(0);
        default:printf("Input error!");
        }
    }
    return 0;
}
/*  函数功能:显示菜单并获得用户键盘输入的选项 */
int Menu(void)
{
    int itemSelected;
    printf("欢迎来到学生管理系统\n");
    printf("1.输入成绩\n");
 printf("12.删除信息\n");
    printf("11.List record\n");
    printf("0.Exit\n");
    printf("Please Input your choice:");
    scanf("%d", &itemSelected);     /* 读入用户输入 */
    return itemSelected;
}
/* 函数功能:输入n个学生的m门课成绩 */
void ReadScore(STU stu[], int n)
{
    int i;
    printf("Input student's ID, name:\n");
    for (i=0; i<n; i++)
    {
        scanf("%ld%s", &stu[i].num, stu[i].name);
}
}
//删除学生信息函数
void del(STU stu[],int n)    //删除学生信息
    {
        int nums;
        int i,j,d;
        printf("\n============按学号进行删除信息===========\n");
        printf("输入想要删除人的学号: ");
        scanf("%d",&nums);
            
        for(i=1;i<=n;i++)
        {
            if(nums==stu[i].num)
            {
            printf("学号\t姓名\n");
            printf("%d\t%s\t\n",stu[i].num,stu[i].name);
            printf("确认删除!(1.Y 2.N)\n");
            scanf("%d",&d);
            if(d==1)
            {
                    for(j=i;j<=n;j++)
                    {
                        stu[j].num=stu[j+1].num;
                        strcpy(stu[j].name,stu[j+1].name);
                    }
                    n--;
            return main();
            }
            if(d==2)
            {
            return main();
            }
        }
    }

/* 函数功能: 打印学生成绩 */
void PrintScore(STU stu[], int n)
{
    int i;
printf("姓名 学号\n");
    for (int i=0; i<n; i++)
    {
        printf("%ld\t%s\t\n", stu[i].num, stu[i].na
  • 写回答

4条回答 默认 最新

  • 关注

    你这个做法不太合理吧。试试我大一课设的做法?
    https://blog.csdn.net/qq_53226437/article/details/112690494
    如果对你有帮助,望采纳

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月12日
  • 已采纳回答 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥20 steam下载游戏占用内存
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系