#include<stdio.h>
struct student
{
int unm;
char name[40];
int score[3];
};
int main()
{
struct student stu[5],*q; //定义5个学生
q=stu;
scanf("%d",q->score[3]);
return 0;
}
[Error] format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Werror=format=]
scanf("%d",q->score[3]);有两个错误
一是score数组大小就3个,这里score[3]是访问第四个元素,越界了
二是%d输入后面变量要求是整型取地址
你想输入三门课的成绩,只能逐个输入
for(int i=0;i<3;i++)
scanf("%d",&q->score[i]);
scanf("%d",q->score[3]);修改为 scanf("%d",&(q->score[3])); 这么就不报错了,但是这是给数组score的第四个元素赋值,会导致数组越界。
不知道你是不是要获取三个score,如果是的话建议这么写如下:
scanf("%d %d %d",&(q->score[0]),&(q->score[1]),&(q->score[2]));
或者使用循环
for (int i = 0; i < 3; i++) {
scanf("%d", &(q->score[i]));
}