qq_21509207 2020-12-21 19:56 采纳率: 33.3%
浏览 100
已采纳

关于表达式必须包含类类型,不允许指针指向不完整的类类型的问题

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct grades {
    double math;
};
struct student
{
    char* name;
    struct gardes* grade;
};
int main()
{
    int i;
    int n;/*定义学生人数*/
    printf("please enter the numbers of students:\n");
    scanf("%d", &n);
    student* number = (student*)malloc(sizeof(student) * (n + 1));

    struct grades g;
    for (i = 0; i < n; i++)
    {
        if (((number + i)->name = (char*)calloc(n + 1, sizeof(char))) != NULL)
            printf("please enter the %d students\n", i + 1);
        printf("please enter the name:\n");
        scanf("%s", (number + i)->name);
        printf("please enter the math grades:\n");
        scanf("%lf", number->grade.math);
    }
        printf("the average is %lf\n", number->grade.math);


    free(number);
}

  • 写回答

1条回答 默认 最新

  • 泡视界 2020-12-21 20:27
    关注

    struct student
    {
        char* name;
        struct gardes* grade;  //第一你单词拼错了,第二我不知道为啥写成struct grades*,

                                         //要么写grades* grade,main函数中中calloc空间,要么就不要用指针,直接写变量 grades grade;
    };

    改为

    struct student
    {
        char* name;
        grades grade;
    };

     

    完了之后

     scanf("%lf", number->grade.math);

    改为

    scanf("%lf", &(number->grade.math));    //并且功能上你应该加上i,最终改为scanf("%lf", &((number+i)->grade.math));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献