c语言结构性数组
c语言结构性数组利用结构体数组编程。数组元素包含学生学号和成绩两个成员。要求从键盘输入20个学生的学号和成绩,将成绩大于90的学生放入到另外一个结构体数组中,并从键盘输出...
c语言结构性数组利用结构体数组编程。数组元素包含学生学号
和成绩两个成员。要求从键盘输入20个学生的学号和成绩,将成绩大于90的学生放入到另外一个结构体数组中,并从键盘输出该数组 展开
和成绩两个成员。要求从键盘输入20个学生的学号和成绩,将成绩大于90的学生放入到另外一个结构体数组中,并从键盘输出该数组 展开
展开全部
1、C语言结构体数组的定义:数组是有序的并且具有相同类型的数据的集合。
2、结构数组就是具有相同结构类型的变量集合。假如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构数组。
结构数组成员的访问是以数组元素为结构变量的,它的形式为:
1、结构数组元素—成员名。
2、例如:student[0].name,student[30].age
3、实际上结构数组相当于一个二维构造, 第一维是结构数组元素, 每个元素是一个结构变量, 第二维是结构成员。
注意:结构数组的成员也可以是数组变量。
2、结构数组就是具有相同结构类型的变量集合。假如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构数组。
结构数组成员的访问是以数组元素为结构变量的,它的形式为:
1、结构数组元素—成员名。
2、例如:student[0].name,student[30].age
3、实际上结构数组相当于一个二维构造, 第一维是结构数组元素, 每个元素是一个结构变量, 第二维是结构成员。
注意:结构数组的成员也可以是数组变量。
展开全部
我测试,不想输入20个学生,就用6个学生测试,你把常量改成20就行。
#include <stdio.h>
#include <malloc.h>
typedef struct student
{
int id;
int score;
}STU;
#define stuNum 6 //学生数量 我测试只用6个学生,你改成20就行
void printfStu(STU stu[],int len);
STU *moveStu1ToStu2ByScore(STU **stu1,int len,int score);//将成绩大于score的学生信息,从stu1中转移到stu2中,返回stu2首地址
int count;//大于指定分数的学生
int main()
{
STU *stu1=NULL,*stu2=NULL;
int i,se;
stu1=(STU *)calloc(stuNum,sizeof(STU));
printf("输入%d个学生的学号及成绩到数组1:\n",stuNum);
for(i=0;i<stuNum;i++)
scanf("%d%d",&stu1[i].id,&stu1[i].score);
printf("数组1的学生信息:\n");
printfStu(stu1,stuNum);
printf("输入要转移的学生分界成绩(大于该成绩):");
scanf("%d",&se);
stu2=moveStu1ToStu2ByScore(&stu1,stuNum,se);
printf("数组1的学生信息:\n");
printfStu(stu1,stuNum-count);
printf("数组2的学生信息:\n");
printfStu(stu2,count);
return 0;
}
STU *moveStu1ToStu2ByScore(STU **stu1,int len,int score)
{
int i,j=0,k=0;
count=0;
STU *stuSave=NULL,*stu2=NULL;
for(i=0;i<len;i++)
if((*stu1)[i].score>score)
count++;
stuSave=(STU *)calloc(stuNum-count,sizeof(STU));
stu2=(STU *)calloc(count,sizeof(STU));
for(i=0;i<len;i++)
if((*stu1)[i].score>score)
stu2[j++]=(*stu1)[i];
else
stuSave[k++]=(*stu1)[i];
free(*stu1);
*stu1=stuSave;
return stu2;
}
void printfStu(STU stu[],int len)//打印学生结构数组
{
int i;
printf("学号 成绩:\n");
for(i=0;i<len;i++)
printf("%d %d\n",stu[i].id,stu[i].score);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如: struct st { int x,y; char str[10];};struct st *array ;int n;printf("input n: "); scanf("%d", &n);array=(struct st*)malloc(n*si...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询