鱼C论坛

 找回密码
 立即注册
查看: 3142|回复: 5

[已解决]结构体数组初始化

[复制链接]
发表于 2023-3-22 19:48:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
}class[5]= {
    {"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[i].score;
        if(class[i].score < 140) num_140++;
    }
    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
    return 0;
}

救命啊,我定义的的结构体数组明明是按照要求来的,怎么还报错啊 ,用的Dev-C++编译的。求求大佬救我
最佳答案
2023-3-22 19:56:01
可能你的源文件的后缀名是 .cpp,在 c++ 中 class 是一个关键字,不能用作标识符的名字

解决方法有两种:

1、把 class 改成别的
2、把源文件的后缀名从 .cpp 改成 .c
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-22 19:51:17 | 显示全部楼层
class变量名是关键字,换一个
我改成这样了:

  1. #include <stdio.h>

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

  15. int main(){
  16.     int i, num_140 = 0;
  17.     float sum = 0;
  18.     for(i=0; i<5; i++){
  19.         sum += classb[i].score;
  20.         if(classb[i].score < 140) num_140++;
  21.     }
  22.     printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
  23.     return 0;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 19:53:56 | 显示全部楼层
需要先分清楚您在写什么语言,如果是 C 的话没有问题,如果是 C++ 的话非法使用关键字了
对于 Dev-C++ 似乎是通过文件后缀名控制将其视为 C 还是 C++ 的,看下您的文件后缀名是什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 19:56:01 | 显示全部楼层    本楼为最佳答案   
可能你的源文件的后缀名是 .cpp,在 c++ 中 class 是一个关键字,不能用作标识符的名字

解决方法有两种:

1、把 class 改成别的
2、把源文件的后缀名从 .cpp 改成 .c
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-23 08:06:44 | 显示全部楼层
isdkz 发表于 2023-3-22 19:56
可能你的源文件的后缀名是 .cpp,在 c++ 中 class 是一个关键字,不能用作标识符的名字

解决方法有两种 ...

感谢大佬,确实是这样,纯属不知道class在cpp文件中属于关键字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

收到收到,确实它被视为c++的了,我实在不知道这一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表