鱼C论坛

 找回密码
 立即注册
查看: 2251|回复: 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
}classb[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 += classb[i].score;
        if(classb[i].score < 140) num_140++;
    }
    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

解决方法有两种:

1、把 class 改成别的
2、把源文件的后缀名从 .cpp 改成 .c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

解决方法有两种 ...

感谢大佬,确实是这样,纯属不知道class在cpp文件中属于关键字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

收到收到,确实它被视为c++的了,我实在不知道这一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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