^334 2022-01-28 19:54 采纳率: 88.5%
浏览 63
已结题

同学们帮我看看为什么学生管理系统性别输入不了呀哪里错了

#include #include void inputstudent(struct studentp); void outstudent(struct studentp); struct student { char name[100]; float score; char sex; }; void main() { int len; printf("请输入共有多少学生"); scanf_s("%d", &len); struct student st; inputstudent(&st,len); outstudent(&st,len); } void inputstudent(struct student p,int len) { int i; p = (struct student)malloc(len * sizeof(struct student)); for (i = 0; i < len; i++) { printf("请输入%d学生信息\n",i+1); printf("请输入第%d学生的姓名\n",i+1); scanf_s("%s",p[i].name,100); printf("请输入第%d学生的成绩\n",i+1); scanf_s("%f", &p[i].score); printf("请输入第%d学生的性别\n",i+1); scanf_s("%c/n", &p[i].sex,1); //getchar(p[i].sex); } free(p); } void outstudent(struct student *p,int j) { int i; for (i = 0; i < j; i++) { printf("第%d学生信息", i + 1); printf("第%d学生的姓名;%s\n",*p->name); printf("第%d学生的成绩;%f\n", *p->score); printf("第%d学生的性别;%c\n", *p->sex); } }

  • 写回答

3条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-01-28 23:40
    关注

    img

    img

    img

    img

    img

    修改了一下,现在这个代码是没问题的。如果你有看不懂的地方可以继续问~

    
    #include <stdio.h>
    //#include<malloc.h>
    #include <stdlib.h>
    struct student
    {
        char name[20];
        float score;
        char sex[5];
    };
    void inputstudent(struct student* pc, int len)
    {
        int i;
        //换个指针变量名pc
        //函数里面创建的动态内存空间无法给main函数里面的p用
        //pc = (struct student*)malloc(len * sizeof(struct student));
        for (i = 0; i <len; i++)
        {
            printf("请输入%d学生信息\n", i+1 );
            printf("请输入第%d学生的姓名>", i + 1);
            scanf("%s", pc[i].name);
            printf("请输入第%d学生的成绩>", i + 1);
            scanf("%f", &pc[i].score);
            printf("请输入第%d学生的性别>", i + 1);
            scanf("%s", pc[i].sex);
            //getchar(p[i].sex);
        }
        printf("输入完成\n");
        
    }
    
    void outstudent(struct student* p, int len)
    {
        int i;
        for (i = 0; i < len; i++)
        {
            printf("第%d学生信息\n", i + 1);
            printf("第%d学生的姓名:%s\n", i + 1, p[i].name);
            printf("第%d学生的成绩:%.2f\n", i + 1, p[i].score);
            printf("第%d学生的性别:%s\n", i + 1, p[i].sex);
        }
        free(p);
    }
    
    int main()
    {
        int len;
        printf("请输入共有多少学生>");
        scanf("%d", &len);
        struct student st;
        struct student* p = &st;
        p = (struct student*)malloc(len * sizeof(struct student));
    
        inputstudent(p, len);
        outstudent(p, len);
    
        return 0;
    }
    

    点个采纳呗~

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

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 修改了问题 1月29日
  • 创建了问题 1月28日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)