结构体数组
2019-08-21 本文已影响0人
1墨家巨子
/*************************************************
学生结构体
姓名 成绩
输入5个学生信息,求平均数
***************************************************/
typedef struct student{
char name[N];
int grade;
}students;
void structTest(void){
int sum=0,avg=0,n=0;
int i;
students stu[5]={
{"zhangsan",21},
{"lisi",56},
{"test",55}
};
strcpy(stu[0].name,"Tom");//字符串赋值
for(i=0;i<sizeof(stu)/sizeof(stu[0]);i++){
scanf("%d %s",&stu[i].grade,&stu[i].name);
sum=sum+stu[i].grade;
}
for(i=0;i<sizeof(stu)/sizeof(stu[0]);i++){
printf("%d %s\n",stu[i].grade,stu[i].name);
}
printf("\n");
avg=sum/(sizeof(stu)/sizeof(stu[0]));
printf("avg=%d\n",avg);
n=sizeof(stu[5].name)/sizeof(char);
printf("n=%d\n",n);
// fflush(stdin);
}
/************************************************
*** 定义结构体指针 ***
*** 传入学生姓名和成绩 ***
*** 求得学生平均成绩并且输出低于, ***
*** 平均成绩学生的姓名。 ***
*************************************************/
typedef struct students{
char name[10];
float score;
} student;
/***********************************************
*** 参数: ***
*** 结构体指针 ***
*** 结构体数组元素个数 ***
************************************************/
void demo(student *stu,int size){
int i;
float sum=0;
for(i=0;i<size;i++){
sum+=stu[i].score;
}
float avg=sum/size;
printf("%f\n",avg);
for(i=0;i<size;i++){
if(stu[i].score<avg)
printf("%s\n",stu[i].name);
}
}
/**************************************************
******* 动态结构体数组 *******
**************************************************/
typedef struct student{
char name[20];
int sroce;
}my_stu;
void dyn_str_arr(void){
int n=3;
printf("输入动态空间大小");
scanf("%d",&n);
my_stu *pstu=(my_stu *)malloc(sizeof(my_stu)*n);
int sum=0;
int i;
int avg=0;
for(i=0;i<n;i++){
srand((unsigned short int)time(NULL));//获取随机数的种子
(pstu+i)->sroce=rand()%30+60;//获取60~90随机成绩
sum+=pstu[i].sroce;//平均成绩求和
printf("请输入第%d个学生的姓名:\n",i+1);
scanf("%s",&(*(pstu+i)->name));
}
avg=sum/n;
printf("平均成绩%d\n",avg);
for(i=0;i<n;i++){
if(pstu[i].sroce<=avg){
printf("低于平均成绩的人%s\n",&(*(pstu+i)->name));
}
}
free(pstu);
pstu=NULL;
}