C程序设计的结构

yzuktlbb  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(174)

这是目前的代码。为平均成绩a从3个学生。下面的代码是我面临的错误。能够工作他们从25到4。
Visual Studio说我有一个无法识别的表达式E0029、E0020、C2065、C2109
不要相信我使用指针,因为我们被告知不要使用它们。阅读错误代码并查看它们,但无法确定我在哪里失败。
先谢谢你了。

#include <stdio.h>
#define N 5
struct student {
    char firstName[50];
    int roll;
    float marks[3];
}s[N];

typedef struct {
    char firstName[50];
    int roll;
    float marks[3];
}student_t;

int main() {
    int i;
    double total = 0;
    double marks_avg ;

    student_t personA, personB, SMCstudent[N];
    SMCstudent->marks[0] = 99;
    personA= { "Daniel",10 {100,98,90} 
    };

    printf("Enter information of student:\n");
    //storing 
    for (i = 0;i < N;++i); {
        s[i].roll = i + 1;
        printf("\nFor all number %d,\n", s[i].roll);
        printf("Enter first name:");
        scanf_s("%s", &s[i].marks);
    }
    printf("Enter 3 marks");
    for (int j = 0; j < 3; j++) {
        printf("enter grade\n");
        scanf_s("%f", s[i].marks[j]);
        scanf_s("%f", & array[i]);
    }
    for (i = 0; i < N; i++) {
        total += s[i].marks[2];
    }
    marks_avg = total / N;

    printf("average grade for 5 students is %f\n\n", marks_avg);
    printf("displaying information:\n\n");
    return 0;
}
f0ofjuux

f0ofjuux1#

@RetiredNinja声称在初始化过程中只能进行结构赋值。
这根本不是事实。
您还需要指定类型名称,但以下代码是有效的:

personA = (student_t){ "Daniel", 10, {100.f,98.f,90.f} };

这是将“复合常值”指派给结构。

  • (左值personA是结构,右边(student_t){...}是复合文字)*

示例,工作代码:

#include <stdio.h>

typedef struct {
    char firstName[50];
    int roll;
    float marks[3];
}student_t;

int main(void) {
    student_t personA;
    
    personA= (student_t){ "Daniel",10, {100.f,98.f,90.f} };
    
    printf("%s(%d): %.2f %.2f %.2f", personA.firstName, personA.roll,
    personA.marks[0], personA.marks[1], personA.marks[2]);
    
    return 0;
}

相关问题