1.定义结构体数组存储5个学生的信息:姓名,年龄,性别
(1)定义函数实现输入,要求形参使用结构体指针接收
(2)函数实现5个学生年龄排序(注意对年龄排序时,交换的是所有信息)
(3)定义函数实现输出,要求形参使用结构体指针接收
#include <stdio.h>
#include <stdlib.h>
//定义学生结构体
typedef struct student
{
char name[20];
int age;
char sex[5];
} Stu, * XS;
void input(XS stu_a, int N);
void output(XS stu_a, int N);
void age_sort(XS stu_a, int N);
int main()
{
int N;
printf("请输入学生人数:");
scanf("%d", &N);
XS stu_a = (XS)malloc(sizeof(Stu) * N); // 定义N个学生结构体变量
if (stu_a == NULL) {
printf("内存分配失败!\n");
return 1;
}
input(stu_a, N);
printf("学生信息:\n");
output(stu_a, N);
age_sort(stu_a, N);
printf("排序后的学生信息:\n");
output(stu_a, N);
free(stu_a); // 释放内存
return 0;
}
//输入函数
void input(XS stu_a, int N)
{
for (int i = 0; i < N; i++)
{
printf("姓名:");
scanf("%s", stu_a[i].name);
printf("年龄:");
scanf("%d", &stu_a[i].age);
printf("性别:");
scanf("%s", stu_a[i].sex);
}
}
//输出函数
void output(XS stu_a, int N)
{
printf("姓名\t年龄\t性别\n");
for (int i = 0; i < N; i++)
{
printf("%s\t %d\t %s\n", stu_a[i].name, stu_a[i].age, stu_a[i].sex);
}
}
//年龄排序函数
void age_sort(XS stu_a, int N)
{
Stu temp;
for (int i = 0; i < N - 1; i++)
{
for (int j = 0; j < N - i - 1; j++)
{
if (stu_a[j].age > stu_a[j + 1].age) // 改为升序排序
{
temp = stu_a[j];
stu_a[j] = stu_a[j + 1];
stu_a[j + 1] = temp;
}
}
}
}
2.定义小车结构体,存储名称、价钱、颜色。定义两个变量a,b,初始化,实现ab互换。
#include <stdio.h>
//定义小车结构体
typedef struct car
{
char brand[20]; //品牌
float price; //价格
char color[10]; //颜色
}Cars;
int main()
{
//定义a,b变量,并初始化
Cars a = { "小米su7",28.8 ,"蓝色" };
Cars b = { "宝马X3", 40.8,"白色" };
Cars temp;
temp=a;
a= b;
b = temp;
printf("a=%s\t %.2fw\t %s\n", a.brand, a.price, a.color);
printf("b=%s\t %.2fw\t %s\n", b.brand, b.price, b.color);
return 0;
}