库里斯托 2023-02-25 13:30 采纳率: 91.1%
浏览 33
已结题

关于”c语言“的问题

头文件下
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct date
{
    int year;
    int month;
    int day;
}DATE;
typedef struct stu
{
    long stuID;     //学号
    char stuname[10];    //名字
    char stusex;     //性别
    DATE birthday;   //生日
    float aver;      //平均分
}STU;
typedef struct node
{
    STU stu;
    struct node* next;   //指向下一个节点的指针
}NODE;
NODE* head = NULL;  //头节点
void start();
void inputstudent();
源文件
#include"stu.h"
int main()
{
    while (1)
    {
        start();
        char ch = _getch();
        switch (ch)
        {
        case '1':  //录入学生信息
            inputstudent();
            break;
        case '2':  //打印学生信息
            break;
        case '3':  //保存学生信息
            break;
        case '4':  //读取学生信息
            break;
        case '5':  //按总分由高到低排出名次
            break;
        case '6':  //按总分由低到高排出名次
            break;
        case '7':  //按学号由小到大排出成绩表
            break;
        case '8':  //按姓名字典顺序排序排出成绩表
            break;
        case '9':  //根据学号查询学生成绩及排名
            break;
        case '0':  //根据姓名查询学生成绩及排名
            break;
        case '00':  //退出系统
            break;
        }
    }
    return 0;
}
void start()
{
        printf("*****************************************\n");
        printf("欢迎使用学生成绩管理系统        *\n");
        printf("*1.录入学生信息                *\n");
        printf("*2.打印学生信息                *\n");
        printf("*3.保存学生信息                *\n");
        printf("*4.读取学生信息                *\n");
        printf("*5.按总分由高到低排出名次        *\n");
        printf("*6.按总分由低到高排出名次        *\n");
        printf("*7.按学号由小到大排出成绩表        *\n");
        printf("*8.按姓名字典顺序排序排出成绩表        *\n");
        printf("*9.根据学号查询学生成绩及排名        *\n");
        printf("*0.根据姓名查询学生成绩及排名        *\n");
        printf("*00退出系统                        *\n");
        printf("*****************************************\n");
        getchar();
}
void inputstudent()
{
    NODE* newnode =(NODE*)malloc(sizeof(node)); //创建头结点,使newnode这个指针可以通过->来当作结构体变量来用
    newnode->next = NULL;
    if (head == NULL)
    {
        head = newnode;
    }
    else
    {
        newnode->next = head;
        newnode = head;
    }
        printf("学号:");
        scanf_s("%ld", &newnode->stu.stuID);
        printf("姓名:");
        scanf_s("%s", newnode->stu.stuname);
        printf("性别:");
        scanf_s("%c", &newnode->stu.stusex);
        printf("年:");
        scanf_s("%d", &newnode->stu.birthday.year);
        printf("月:");
        scanf_s("%d", &newnode->stu.birthday.month);
        printf("日:");
        scanf_s("%d", &newnode->stu.birthday.day);
}

img


执行的时候卡到性别那里不动了,怎么回事?

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-02-25 14:40
    关注

    录入函数修改如下,改动处见注释,供参考:

    void inputstudent()
    {
        NODE* newnode =(NODE*)malloc(sizeof(node)); //创建头结点,使newnode这个指针可以通过->来当作结构体变量来用
        newnode->next = NULL;
        if (head == NULL)
        {
            head = newnode;
        }
        else
        {
            newnode->next = head;
            head = newnode; //newnode = head;  修改
        }
            printf("学号:");
            scanf_s("%ld", &newnode->stu.stuID);
            printf("姓名:");
            scanf_s("%s", newnode->stu.stuname,10); //修改
            printf("性别:");
            scanf_s(" %c", &newnode->stu.stusex,1);  //修改
            printf("年:");
            scanf_s("%d", &newnode->stu.birthday.year);
            printf("月:");
            scanf_s("%d", &newnode->stu.birthday.month);
            printf("日:");
            scanf_s("%d", &newnode->stu.birthday.day);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)