c语言结构体与函数结合使用

2024-11-24 15:58:55
推荐回答(3个)
回答1:

我在VC6里面运行了一下主要有一下的错误
1,首先,汉字“男”这个是一个字符串,所以必须占三个字节也就是 char sex[3];才可以记住,字符串以‘\0’结尾哦!你没有算\0
2,就是你丢了好几个(逗号),自己找下
4,,再次你的struct test后的k[5]只能说是声明了一个变量,但是变量的初始化必须在main 内进行,但是又牵扯到了字符赋值的问题!这个可能你没太深入去学!额错误有点多,我给你改了下,你自己在仔细找找哪里有错误吧!
#include
struct test
{
int kaohao;
char name[10];
char sex[3];
int age;
float chengji;
};
void best(test k[5])
{
int i=0;
float max=0;
struct test maxs;
for(;i<5;i++)
if(k[i].chengji>max)
{
max=k[i].chengji;
maxs=k[i];
}
printf("最高成绩的人是:%s\n成绩为%f\n",maxs.name,maxs.chengji);

}
int main()
{
struct test k[5]={ //要是.c文件的话就必须注明声明变量!你之前的声明也可以声明
//k[5]变量但是不能在拿来初始化!总的来说你写的还挺不错的!
//继续加油啊!
{1101,"张三","男",19,68.5},
{1102,"李四","男",20,75},
{1103,"王五","女",18,80.5},
{1104,"孙六","女",18,90},
{1105,"周七","男",19,59}};

best(k);
return 0;
}

回答2:

可以用结构体对结构体赋值,运行效率会比较低,建议使用结构体指针,如果不需要改动目标结构体的内容

回答3:

修改处加了注释。主要是函数参数传递问题出的错。
#include
struct test
{
int kaohao;
char name[10];
char sex[2];
int age;
float chengji;
}k[5]={
{1101,"张三","男",19,68.5},
{1102,"李四","男",20,75},     
{1103,"王五","女",18,80.5},    少了个 “,”
{1104,"孙六","女",18,90} ,     少了个 “,”
{1105,"周七","男",19,59}};

void best()    此函数无需形参。因struct test k[5] 是外部变量,无需传值。
{
int i=0;
float max=0;
struct test maxs;    struct test  是结构体类型名,不可只用 test maxs;
for(i=0;i<5;i++)
if(k[i].chengji>max)
{max=k[i].chengji;
maxs=k[i];
}
printf("最高成绩的人是:%s\n成绩为%6.2f\n",maxs.name,maxs.chengji);
}
main()
{
best();         调用时也无需给实参
 getchar(); 暂停用
}