#include <stdioh>
#include <stringh>
struct student {
long sno;
char name[10];
float score[3];
};
void fun(struct student a[], int n) { // 按name排序
struct student / __1__ / t; //声明一个结构体的临时变量
int i, j;
for(i = 0; i < n - 1;/ __2__ / i++)
for(j = i + 1; j < n; j++)
if(strcmp(a[i]name,a[j]name) > 0) { // 升排序
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
int main() {
struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},
{10003,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}}; // s是数组
int i, j;
printf("\n\nThe original data :\n\n");
for (j=0; j<4; j++) {
printf("\nNo: %ld Name: %-8s Scores: ",s[j]sno, s[j]name);
for (i=0; i<3; i++) printf("%62f ", s[j]score[i]);
printf("\n");
}
fun(s, 4);
printf("\n\nThe data after sorting :\n\n");
for (j=0; j<4; j++) {
printf("\nNo: %ld Name: %-8s Scores: ",s[j]sno, s[j]name);
for (i=0; i<3; i++) printf("%62f ", s[j]score[i]);
printf("\n");
}
return 0;
}
union
un
{
int
i;
double
y;
};
确实是取最大的8
所以只将char部分注释掉得到8
char
a[10];单独页确实是10
但是结构体的sizeof有个存储空间对齐的问题,
char
a[10];union
un
b;两个a本来是10个字符,但是b他一个就是8,那整个就要和8对齐,10个有8个可以对齐,剩下两个后面只好加6个空补足了和8对齐了
通俗地说,C语言的结构体是一种复合数据类型。举一个应用C语言结构体编程的例子,例如:编制一个人员通讯录程序。一般来说,通常通讯录信息包含如下内容:姓名、性别、地址、座机电话、手机号码、邮政编码。那么像这种情况下,如果使用 C 语言提供的结构体定义数据类型就很方便了。
#define NAMELEN 20 / 姓名长度,可自行修改 /
#define SEXLEN 4 / 性别 /
#define ADDRESSLEN 40 / 通讯地址长度,可自行修改 /
#define ZUOJI_LEN 20 / 座机电话长度,可自行修改 /
#define SHOUJI_LEN 11 / 手机长度为 11 位 /
#define YOU_BIAN_LEN 6 / 邮编长度,一般为 6 /
struct tong_xun_lu / 定义一个名为 tong_xun_lu 的结构体 /
{
unsigned char name[NAMELEN] ;
unsigned char sex[SEXLEN] ;
unsigned char address[ADDRESSLEN] ;
unsigned char zuoji_phone_number[ZUOJI_LEN] ;
unsigned char shouji_phone_number[SHOUJI_LEN] ;
unsigned char you_bian[YOU_BIAN_LEN] ;
} ;
struct tong_xun_lu my_address[200] ; / 定义一个最多可以存放 200 个人的通讯录的结构数组 /
以上就是关于高分求助,一个C语言结构体程序的问题!全部的内容,包括:高分求助,一个C语言结构体程序的问题!、C语言程序联合和结构体的问题、C语言结构体等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)