雀食喵 2021-05-03 22:32 采纳率: 0%
浏览 36
已结题

程序老是执行不了,这个应该怎么解决,有没有大佬帮忙看一下的?

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct Stu
{
    char id[10];
    char name[20];
    char bj[10];
    int sx,yy,jsj;
    struct Stu * st;    
}Stu;
Stu * head = NULL;
Stu * tail = NULL;

void help()
{
    printf("---------------主菜单-------------\n");
    printf("1.录入学生信息      2.查询学生信息\n");
    printf("3.学生成绩排名      4.修改学生信息\n");
    printf("5.删除学生信息      6.打印学生信息\n");    
    printf("-----------0. 退出系统------------\n");    
    return;
}

void input()
{
    int i,n;
    printf("请输入录入学生的人数:\n");
    while (scanf("%d", &n) != 1)  
    {
        printf("输入有误!请重新输入:\n");
        fflush(stdin);
    }
    Stu * temp = (Stu *)malloc(sizeof(Stu));
    for(i=0;i<n;++i)
    {
        printf("输入第%d个学生学号:",i+1);
        scanf("%s",temp->id);
        printf("输入第%d个学生姓名:",i+1);
        scanf("%s",temp->name);
        printf("输入第%d个学生班级:",i+1);
        scanf("%s",temp->bj);
        printf("输入该学生三门课成绩:\n");
        printf("数学:");
        scanf("%d",&temp->sx);
        printf("英语:");
        scanf("%d",&temp->yy);
        printf("计算机:");
        scanf("%d",&temp->jsj);
        temp->st = NULL;
            if (head == NULL)
            {
                head = temp;
                tail = temp;
            }
            else 
            {
                tail->st = temp;
                tail = temp;
            }
    }    
    return;
}

Stu * chaxun()
{
    char str[20];
    printf("输入要查找的学生学号或姓名\n按“#”退出\n");
    scanf("%s",str);
    if(str[20]=='#')    return NULL;
    Stu * temp = head;
    if(head==NULL||temp==NULL)
    { 
        printf("未查找到相关信息!\n");
        return NULL; 
    }
    else
    {
        while (temp)
        {
            if (!strcmp(temp->id, str) || !strcmp(temp->name, str))
            break;               
            temp = temp->st;
        }
        printf("查找学生信息如下:\n");
        printf("学号:%s,姓名:%s,班级:%s\n",temp->id,temp->name,temp->bj);
        printf("数学成绩:%d,英语成绩:%d,计算机成绩:%d\n",temp->sx,temp->yy,temp->jsj);
    }
    return temp;
}

void paiming(Stu **s)
{
    Stu *p,*q,*t,*r;
    q=(*s)->st;
    p=q->st;
    while(p!=NULL) 
    {
        if(p->jsj>=q->jsj) 
        { 
            p=p->st;
            q=q->st;
        } 
        else 
        {
            t=(*s)->st;
            r=*s;
            while((p->jsj)>(t->jsj)) 
            {
                r=t;
                t=t->st;
            }
            q->st=p->st;
            p->st=t;
            r->st=p;
            p=q->st;
        }
    }
        return;
}

void xiugai()
{
    char n;
    Stu * temp = chaxun();
    if(temp==NULL)
    printf("无可修改内容\n");
    else
    {
        int num;
        Repeat:
        printf("输入需要修改的内容\n");
        printf("1.学号--2.姓名--3班级\n");
        printf("4.数学成绩--5英语成绩--6计算机成绩\n");
        while 
            (scanf("%d", &num) != 1 || num < 0 || num > 6 )
        {
            printf("您的输入不正确,请重新输入:\n");
                fflush(stdin);
        }
            switch (num)
        {
              case 1:
                  printf("请输入修改的学号\n");
                  scanf("%s",temp->id);
                break;
              case 2:
                 printf("请输入修改的姓名\n");
                  scanf("%s,",temp->name);
                break;
             case 3:
                  printf("请输入修改的班级\n");
                  scanf("%s",temp->bj);
                break;
              case 4:
                 printf("请输入修改的数学成绩\n");
                  scanf("%d",&temp->sx);
                break;
              case 5:
                  printf("请输入修改的英语成绩\n");
                  scanf("%d",&temp->yy);
                break;
              case 6:
                  printf("请输入修改的计算机成绩\n");
                  scanf("%d",&temp->jsj);
                break;
        }
        printf("信息更改后如下:\n");
        printf("学号:%s,姓名:%s,班级:%d\n",temp->id,temp->name,temp->bj);
        printf("数学成绩:%d,英语成绩:%d,计算机成绩:%d\n",temp->sx,temp->yy,temp->jsj);
        printf("是否确认无误?(1or0)\n");
        scanf("%c", &n);
        if (n != '1') 
        goto Repeat;
        printf("您已确认,更改完成!\n");
    }
        return;
}

void shanchu()
{
    Stu * temp=chaxun();
    if(head==NULL||temp==NULL)
    {
        printf("无可删除内容\n");
    }
    else if (head == tail)
    {
        free(head);
        head = NULL;
        tail = NULL;
        printf("删除成功!\n");
    }    
    else if (temp == head)
    {
        head = head->st;
        free(temp);
        printf("删除成功!\n ");
    }    
    else if(temp==tail)
    {
        Stu * pt=head;
        while (pt->st->st)
            pt=pt->st;
        free(tail);
        tail = pt;
        tail -> st = NULL;
        printf("删除成功!\n ");
    }
   return;
}

void print()
{
    Stu * phead=head;
    if(phead==NULL)
    printf("暂无学生信息!\n");
    while (phead)
    {
        printf("学号:%s,姓名:%s,班级:%d\n", phead->id, phead->name, phead->bj);
        printf("数学成绩:%d,英语成绩:%d,计算机成绩:%d\n",phead->sx,phead->yy,phead->jsj);
        phead = phead -> st;
    }
    return;
}

int main(void)
{
    int num; char ch;
    do
    { 
        help();
        printf("请选择一个操作:\n");
        while 
            (scanf("%d", &num) != 1 || num < 0 || num > 6 )
        {
            printf("您的输入不正确,请重新输入:\n");
        }
        switch (num)
        {
              case 0:
                  printf("谢谢使用,再见!\n");
                  return 0;
              case 1:
                  input(); break;
              case 2:
                 chaxun(); break;
              case 3:
                paiming(); break;                 
              case 4:
                xiugai(); break;              
              case 5:
                  shanchu(); break;
              case 6:
                  print(); break;
        }
        printf("本次任务结束,回主菜单或退出程序:(1or0)\n"); 
        scanf(" %c", &ch);
    }
    while (ch == '1'); 
    printf("谢谢使用!再见\n");
    return 0;
}
  • 写回答

5条回答 默认 最新

  • 关注

    有没有错误信息呢,贴出来更好定位问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月25日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!