结构体

结构体
结构体写在int main()前
struct 结构体名 {成员表列};
写复数:
实部r 虚部v
struct Plural {
int r;
int v;
};

也可以简洁为:
typedef struct {
int r;
int v;
} Plural;

不能将一个结构体变量作为一个整体进行输入和输出。
例如: 已定义student1和student2为结构体变量并且它们已有值。
printf(″%d,%s,%c,%d,%f,%\n″,student1); 错误
(2) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
例如:
scanf(″%d″,&student1.num); (输入student1.num的值)
printf(″%o″,&student1); (输出student1的首地址)

虚数加减运算

#include <stdio.h>

typedef struct {
int r;
int v;
} Plural;

Plural plus(Plural a,Plural b){
int r = a.r + b.r;
int v = a.v + b.v;
Plural x;
x.r = r;
x.v = v;
return x;
}

Plural minus(Plural a, Plural b){
int r = a.r - b.r;
int v = a.v - b.v;
Plural x;
x.r = r;
x.v = v;
return x;
}

void show(Plural a){
if(a.r == 0){
printf("%d", a.v);
}else if(a.v == 0){
printf("%d", a.r);
}else if(a.v < 0){
printf("%d%di", a.r, a.v);
}else{
printf("%d+%di", a.r, a.v);
}
}

int main(){
Plural p1,p2;
p1.r = 5;
p1.v = -2;

p2.r = 1;
p2.v = 3;

show(minus(p1, p2));
//show(plus(p1, p2));
return 0;
}

排列虚数结构体(比较实部大小后,若实部相同比较虚部大小)
#include <stdio.h>
#include <stdlib.h>

typedef struct {
int r;
int v;
} Plural;

Plural plus(Plural a,Plural b){
int r = a.r + b.r;
int v = a.v + b.v;
Plural x;
x.r = r;
x.v = v;
return x;
}

Plural minus(Plural a, Plural b){
int r = a.r - b.r;
int v = a.v - b.v;
Plural x;
x.r = r;
x.v = v;
return x;
}

int compare(Plural a, Plural b){
if(a.r - b.r != 0){
return a.r - b.r;
}else{
return a.v - b.v;
}
}

void swit(Plural** pp1, Plural** pp2){
Plural* temp = *pp1;
*pp1 = *pp2;
*pp2 = temp;
}

void sort(Plural* arr[], int len){
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if(compare(*arr[j], *arr[j+1]) > 0){
swit(&arr[j], &arr[j+1]);

		}
	}
}

}

void show(Plural a){
if(a.r == 0){
printf("%di\n", a.v);
}else if(a.v == 0){
printf("%d\n", a.r);
}else if(a.v < 0){
printf("%d%di\n", a.r, a.v);
}else{
printf("%d+%di\n", a.r, a.v);
}

}

void showArr(Plural* arr[], int len){
for(int i=0;i<len;i++){
show(*arr[i]);
}
}

int main(){
Plural p1 = {2, 2}, p2 = {1, 5}, p3 = {1, 1}, p4 = {1, 2}, p5 = {0, 1};

Plural * arr[] = {&p1, &p2, &p3, &p4, &p5};

showArr(arr, 5);
sort(arr, 5);
printf("---------------\n");
showArr(arr, 5);
return 0;
}

用结构体建立链表:
struct student
{
int num;
float score;
  struct student *next ;
};
其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型)

处理动态内存所需的函数
库函数提供动态地开辟和释放存储单元的
有关函数:
1)malloc函数: void *malloc(unsigned int size);
其作用:是在内存的动态存储区中分配一个长度为size的连续空间。
返回值:是一个指向分配域起始地址的指针(类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋芋辰丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值