【发布时间】:2020-04-08 13:51:09
【问题描述】:
/*Using structures, write an interactive C program to
generate Grade Card for BCA first semester courses for
20 students of your study centre.*/
#include<stdio.h>
struct Marks
{
char subject[5];
float subject_marks[5];
};
struct GradeCard
{
char name[30];
int roll_num;
struct Marks table;
};
int main()
{
struct GradeCard student;
int i;
//name of student
printf("Enter the name of student: \t");
scanf("%s", &student.name);
//roll number of student
printf("Enter the roll number of student: \t");
scanf("%d", &student.roll_num);
//name of courses
printf("Enter the subjects: \t");
student.table.subject[5] = {'B', 'C', 'D', 'E', 'F'};
//marks in respective courses
for (i = 0; i < 5; i++)
{
scanf("%f", &student.table.subject_marks[i]);
}
//printing all the details
printf("%s\n", student.name);
printf("%d\n", student.roll_num);
for(i = 0; i < 5; i++)
{
printf("%s : %f\n",student.table.subject[i], student.table.subject_marks[i]);
}
}
我必须为 20 名学生做这件事。我想先和一个学生一起尝试。我得到的错误是:
错误:“{”标记之前的预期表达式
student.table.subject[5] = {'B', 'C', 'D', 'E', 'F'};
【问题讨论】:
-
数组没有赋值运算符。因此,例如他的声明 student.table.subject[5] = {'B', 'C', 'D', 'E', 'F'};是不正确的。实际上,在此语句中,您正在尝试使用花括号列表初始化数组索引为 5 的不存在元素。
-
这不是初始化,而是赋值。 5 超出范围 - 它必须是 0 ... 4 之一。而且您不能为其分配数组 - 您需要分配单个字符,例如
'D'.