^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 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应