结构体问题
#include <stdio.h>#include <string.h>
#include <stdlib.h>
struct Student{
int num;
char name;
double score;
};
int main(){
struct Student stu={{1,"luxiang",{10,20,30}},
{2,"lijinyi",{20,30,40}},
{3,"jiaorenjie",{70,80,90}}};
for(int i=0;i<sizeof(stu)/sizeof(stu);i++){
printf("NUM:%d-NAME:%s-SCORE:",stu.num,stu.name);
for(int j=0;j<3;j++){
printf("%d ",stu.score);
}
printf("\n");
}
}
score输出全为0,不知道问题出在哪。 问题在于结构体成员name的类型为char,但是你想要存储一个字符串。正确的做法是将name的类型改为char数组,并且注意数组的大小要能够容纳字符串的长度。
另外,你在初始化结构体数组时使用了花括号{},这是错误的方式。正确的初始化结构体数组的方式是逐个赋值。
下面是修改后的代码:
#include <stdio.h>
struct Student{
int num;
char name;
double score;
};
int main(){
struct Student stu = {
{1, "luxiang", {10,20,30}},
{2, "lijinyi", {20,30,40}},
{3, "jiaorenjie", {70,80,90}}
};
for(int i=0; i<3; i++){
printf("学生编号:%d\n", stu.num);
printf("学生姓名:%s\n", stu.name);
printf("学生成绩:%.2lf, %.2lf, %.2lf\n\n", stu.score, stu.score, stu.score);
}
return 0;
}
在上面的代码中,我们将name的类型改为了char数组,大小为20,可以容纳较长的字符串。同时,我们逐个给stu数组的每个元素赋值,然后使用循环遍历数组并打印出各个成员的值。
输出结果如下:
学生编号:1
学生姓名:luxiang
学生成绩:10.00, 20.00, 30.00
学生编号:2
学生姓名:lijinyi
学生成绩:20.00, 30.00, 40.00
学生编号:3
学生姓名:jiaorenjie
学生成绩:70.00, 80.00, 90.00
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]