char name
int number
struct student *next
}
我不知道你为什么这么定义,如果是我可能这么定义
struct student {
char name/*学生姓名*/
int 性别/*1代表femail (女性), 0 代表mail(男性)*/
int age
struct student *next/*为了用链表实现而采用*/
};
这样完全可以实现你需要的数据类型.只需要再加上一些算法就可以了.
如果还有什么问题可以与我联系.
一般工业上都会使用 typedef 来定义公司内部的统一定义如
typedef struct student {
}
#include <stdio.h>struct date {
int year
int month
int day
}
struct student{
int id
char name[10]
char sex[10]
struct date birthday
}
int main() {
int i
struct student stu[5]
for(i=0 i<5 i++){
printf("输入第%d个学生学号,姓名,性别,生日\n", i + 1)
scanf("%d %s %s %d %d %d", &stu[i].id, stu[i].name, stu[i].sex,
&stu[i].birthday.year, &stu[i].birthday.month, &stu[i].birthday.day)
}
printf("输出第3个学生的信息:\n")
printf("%d, %s, %s, %d, %d, %d", stu[3].id, stu[3].name, stu[3].sex,
stu[3].birthday.year, stu[3].birthday.month, stu[3].birthday.day)
return 0
}
这个是个简单的实现,不知道对你有没有帮助。
你的input函数有问题,input函数里面定义的st变量为局部变量,函数返回后,自动释放了。所以你需要在堆栈上分配数据空间。示例代码如下:
#include "stdio.h"#define MAX_ACCOUNT 100 //假定可以添加100个用户 typede struct peo
{
int number
char name[20]
int score
}PEO
PEO s[MAX_ACCOUNT] PEO* input(int num)
{
PEO* st = (PEO*)malloc(sizeof(PEO))
st->number = num
printf("请输入姓名:\r\n")
scanf("%s", st->name)
printf("请输入积分:\r\n")
scanf("%d", &(st->score))
return st
}
int main()
{
for(int i=0 i<MAX_ACCOUNT i++)
{
s[i] = *(input(i))
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)