【嵌入式学习】数据结构-Day1-结构体

思维导图&笔记

在这里插入图片描述

1.使用多文件编辑,
定义商品信息:商品名称,商品单价,商品购买个数,商品描述,循环输入购买的商品,按单价排序,输出商品信息,计算最贵的商品以及一共花了多少钱?
在create函数,请实现在堆区申请内存5个连续的内存
在input函数,请实现循环输入购买的商品
在bubble函数,请实现按单价排序
在Max函数,计算最贵的商品名称
在Money函数,计算共花了多少钱
在output函数,请实现输出
在free_space函数。实现释放堆区内存

main.c:

/*
 * Filename: main.c
 * Author: linus
 * Date: 2023-12-20
 * Version: 1.0
 *
 * Description: The purpose of this code.
 */

#include "myhead.h"
int main(int argc,const char *argv[]){
        goods_t *p;
        p=creat(5);
        input(p,5);
        bubble(p,5);
        output(p,5);
        return 0;
}

myhead.h:

#ifndef _MYHEAD_H_
#define _MYHEAD_H_

#include <stdio.h>
#include <stdlib.h>

typedef struct goods{
        char name[10];
        unsigned int price;
        unsigned int count;
        unsigned int number;
        char descrip[20];
}goods_t;

goods_t *creat(unsigned int n);
void input(goods_t *p,unsigned int n);
void bubble(goods_t *p,unsigned int n);
goods_t* Max(goods_t *p,unsigned int n);
int Money(goods_t *p,unsigned int n);
void output(goods_t *p,unsigned int n);
int* free_space(int *p);


#endif

commodity.c:

/*
 * Filename: commodity.c
 * Author: linus
 * Date: 2023-12-20
 * Version: 1.0
 *
 * Description: The purpose of this code.
 */

#include "myhead.h"
goods_t* creat(unsigned int n){
        goods_t *p;
        p=(goods_t *)malloc(sizeof(goods_t)*n);
        return p;
}

void input(goods_t *p,unsigned int n){
        puts("begin input!");
        for (int i = 0; i < n; i++) {
                puts("############################");
                printf("Please Enter goods %d:\n",i+1);
                printf("name:");
                scanf("%s",(p+i)->name);
                printf("price:");
                scanf("%d",&(p+i)->price);
                printf("count:");
                scanf("%d",&(p+i)->count);
                printf("Description:");
                scanf("%s",(p+i)->descrip);
        }
        puts("finish input!");
}
void bubble(goods_t *p,unsigned int n){
        puts("begin bubble...");
        for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                        if((p+j)->price>(p+j+1)->price){
                                goods_t tmp=*(p+j);
                                *(p+j)=*(p+j+1);
                                *(p+j+1)=tmp;
                        }
                }
        }
        puts("finish bubble.");
}

goods_t *Max(goods_t *p,unsigned int n){
        //puts("Max...");
        goods_t *Max=p;
        for (int i = 0; i < n; i++) {
                if((Max->price) < ((p+i)->price)){
                        Max=(p+i);
                }
        }
        //puts("finish Max.");
        return Max;
}


int Money(goods_t *p,unsigned int n){
        //puts("Money...");
        int sum=0;
        for (int i = 0; i < n; i++) {
                sum+=((p+i)->price)*((p+i)->count);
        }
        //puts("finish Money.");
        return sum;
}

void output(goods_t *p,unsigned int n){
        puts("排序后的商品:");
        for (int i = 0; i < n; i++) {
                printf("--------%d-------",i+1);
                printf("name:%s\n",(p+i)->name);
                printf("price:%d\n",(p+i)->price);
                printf("count:%d\n",(p+i)->count);
                printf("Description:%s\n",(p+i)->descrip);
        }

        puts("最贵的:");
        goods_t *mmm=Max(p,n);
        printf("name=%s\n",mmm->name);
        printf("price=%d\n",mmm->price);
        printf("Description=%s\n",mmm->descrip);

        puts("");

        puts("总价:");
        printf("%d\n",Money(p,n));

}
EXE=hi
OBJS=$(patsubst %.c,%.o,$(wildcard *.c))

CC=gcc
CFLAGS=-c -o

all:$(EXE)

$(EXE):$(OBJS)
        $(CC) $^ -o $@

%.o:%.c
        $(CC) $(CFLAGS) $@ $^

.PHONY:clean
clean:
        rm $(OBJS) $(EXE)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值