重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都垃圾桶等,在成都网站建设、成都全网营销推广、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。
#include string.h
#define N (5)
struct STUDENT
{
char name[20];
int age;
float chinese,math;
};
void scan(struct STUDENT *a,int n);
void print(struct STUDENT *a,int n);
void sort(void *a,int n,int size,int (*cmp)(void *,void *));
int cmp_score(void *a,void *b);
int cmp_chinese(void *a,void *b);
int cmp_name(void *a,void *b);
int main()
{
struct STUDENT a[N];
int i;
scan(a,N);
sort(a,N,sizeof(*a),cmp_score);
print(a,N);
sort(a,N,sizeof(*a),cmp_chinese);
print(a,N);
sort(a,N,sizeof(*a),cmp_name);
print(a,N);
return 0;
}
void scan(struct STUDENT *a,int n)
{
int i;
for(i=0;in;++i)
{
scanf("\n%s %d %f %f",a[i].name,a[i].age,a[i].chinese,a[i].math);
}
}
void print(struct STUDENT *a,int n)
{
int i;
for(i=0;in;++i)
{
printf("%s %d %f %f\n",a[i].name,a[i].age,a[i].chinese,a[i].math);
}
}
void sort(void *a,int n,int size,int (*cmp)(void *,void *))
{
int i,j;
void *t=malloc(size);
for(i=0;in-1;++i)
{
for(j=0;jn-i-1;++j)
{
if(cmp(a+size*j,a+size*(j+1)))
{
memcpy(t,a+size*j,size);
memcpy(a+size*j,a+size*(j+1),size);
memcpy(a+size*(j+1),t,size);
}
}
}
free(t);
}
int cmp_score(void *a,void *b)
{
return ((struct STUDENT *)a)-chinese+((struct STUDENT *)a)-math((struct STUDENT *)b)-chinese+((struct STUDENT *)b)-math;
}
int cmp_chinese(void *a,void *b)
{
return ((struct STUDENT *)a)-chinese((struct STUDENT *)b)-chinese;
}
int cmp_name(void *a,void *b)
{
return strcmp(((struct STUDENT *)a)-name,((struct STUDENT *)b)-name)0;
}
一个程序通常围绕这两个方面进行:数据存储和数据操作;
结构体是一种数据类型,用来将不同类型的数据组合在一起,决定数据的存储问题(比如在内存占多大的空间来,系统怎么解释存储数据的位数据啦等等)同int, double 等编译器内置的数据类型基本相同,只不过结构体是用户自己定义的数据类型而已,例如:
struct student
{
char name[20];
int NO;
};
函数是对数据的一种操作;
#include "stdio.h"
struct abc{
int a;
int b;
char *p;
};
struct abc myabc(void){
struct abc n;
n.a=2;
n.b=3;
n.p=(char *)0x00FF3304;
return n;
}
void main(void)
{
struct abc x={1,2,(char *)0x00FF3300},y;
y=myabc();
printf("%d %d %p\n%d %d %p\n",x.a,x.b,x.p,y.a,y.b,y.p);
}
扩展资料:
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。