fuaowei 发表于 2023-3-22 19:48:12

结构体数组初始化

#include <stdio.h>

struct stu{
    char *name;//姓名
    int num;//学号
    int age;//年龄
    char group;//所在小组
    float score;//成绩
}class= {
    {"Li ping", 5, 18, 'C', 145.0},
    {"Zhang ping", 4, 19, 'A', 130.5},
    {"He fang", 1, 18, 'A', 148.5},
    {"Cheng ling", 2, 17, 'F', 139.0},
    {"Wang ming", 3, 17, 'B', 144.5}
};

int main(){
    int i, num_140 = 0;
    float sum = 0;
    for(i=0; i<5; i++){
      sum += class.score;
      if(class.score < 140) num_140++;
    }
    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
    return 0;
}

救命啊,我定义的的结构体数组明明是按照要求来的,怎么还报错啊{:10_266:} {:10_266:} ,用的Dev-C++编译的。求求大佬救我{:10_285:}

歌者文明清理员 发表于 2023-3-22 19:51:17

class变量名是关键字,换一个
我改成这样了:

#include <stdio.h>

struct stu{
    char *name;//姓名
    int num;//学号
    int age;//年龄
    char group;//所在小组
    float score;//成绩
}classb= {
    {"Li ping", 5, 18, 'C', 145.0},
    {"Zhang ping", 4, 19, 'A', 130.5},
    {"He fang", 1, 18, 'A', 148.5},
    {"Cheng ling", 2, 17, 'F', 139.0},
    {"Wang ming", 3, 17, 'B', 144.5}
};

int main(){
    int i, num_140 = 0;
    float sum = 0;
    for(i=0; i<5; i++){
      sum += classb.score;
      if(classb.score < 140) num_140++;
    }
    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
    return 0;
}

dolly_yos2 发表于 2023-3-22 19:53:56

需要先分清楚您在写什么语言,如果是 C 的话没有问题,如果是 C++ 的话非法使用关键字了
对于 Dev-C++ 似乎是通过文件后缀名控制将其视为 C 还是 C++ 的,看下您的文件后缀名是什么

isdkz 发表于 2023-3-22 19:56:01

可能你的源文件的后缀名是 .cpp,在 c++ 中 class 是一个关键字,不能用作标识符的名字

解决方法有两种:

1、把 class 改成别的
2、把源文件的后缀名从 .cpp 改成 .c

fuaowei 发表于 2023-3-23 08:06:44

isdkz 发表于 2023-3-22 19:56
可能你的源文件的后缀名是 .cpp,在 c++ 中 class 是一个关键字,不能用作标识符的名字

解决方法有两种 ...

感谢大佬,确实是这样{:10_254:},纯属不知道class在cpp文件中属于关键字

fuaowei 发表于 2023-3-23 08:08:32

dolly_yos2 发表于 2023-3-22 19:53
需要先分清楚您在写什么语言,如果是 C 的话没有问题,如果是 C++ 的话非法使用关键字了
对于 Dev-C++ 似 ...

收到收到,确实它被视为c++的了{:10_245:},我实在不知道这一点
页: [1]
查看完整版本: 结构体数组初始化