嵌入式学习-数据结构-Day1、2
一、思维导图
二、作业
1.使用多文件编辑定义商品信息:商品名称,商品单价,商品购买个数,商品描述。循环输入购买的商品,按单价排序,输出商品信息计算最贵的商品以及一共花了多少钱?
在create函数,请实现在堆区申请内存5个连续的内存
在input函数,请实现循环输入购买的商品
在bubble函数,请实现按单价排序
在Max函数,计算最贵的商品名称
在Money函数计算共花了多少钱
在output函数,请实现输出
在free space函数。实现释放堆区内存主函数
#include "head.h"
int main(int argc, const char *argv[])
{
struct commodity* p=create();
input(p);
bubble(p);
Max(p);
Money(p);
output(p);
p=free_space(p);
return 0;
}
头文件
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct commodity
{
char name[20];
int price;
int num;
char desc[20];
};
struct commodity* create();
void input(struct commodity* p);
void bubble(struct commodity* p);
void Max(struct commodity* p);
void output(struct commodity* p);
void Money(struct commodity* p);
struct commodity* free_space(struct commodity* p);
#endif
函数文件
#include "head.h"
struct commodity* create()
{
struct commodity* p=(struct commodity*)malloc(sizeof(struct commodity)*5);
if(NULL==p)
return NULL;
return p;
}
void input(struct commodity* p)
{
for(int i=0;i<5;i++)
{
printf("请输入商品名称: ");
scanf("%s",(p+i)->name);
printf("请输入商品单价: ");
scanf("%d",&(p+i)->price);
printf("请输入商品购买个数: ");
scanf("%d",&(p+i)->num);
printf("请输入商品描述: ");
scanf("%s",(p+i)->desc);
}
printf("========================\n");
}
void output(struct commodity* p)
{
for(int i=0;i<5;i++)
{
printf("名称\t单价\t购买个数\t描述\n");
printf("%s\t%d\t%d\t\t%s\n",(p+i)->name,(p+i)->price,(p+i)->num,(p+i)->desc);
}
}
struct commodity* free_space(struct commodity* p)
{
if(NULL==p)
return NULL;
free(p);
p=NULL;
return p;
}
void bubble(struct commodity* p)
{
for(int i=1;i<5;i++)
{
for(int j=0;j<5-i;j++)
{
if((p+j)->price > (p+j+1)->price)
{
struct commodity t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
printf("商品单价冒泡排序:\n");
for(int i=0;i<5;i++)
printf("%s\t",(p+i)->name);
for(int i=0;i<5;i++)
printf("%d\t",(p+i)->price);
puts("");
}
void Max(struct commodity* p)
{
int max=0;
int i,j;
for(i=0;i<5;i++)
if(max<(p+i)->price)
{
max=(p+i)->price;
j=i;
}
printf("单价最贵的商品是:%s\n",(p+j)->name);
}
void Money(struct commodity* p)
{
int sum=0;
for(int i=0;i<5;i++)
{
sum+=((p+i)->price)*((p+i)->num);
}
printf("共计花了%d元\n",sum);
}
运行结果