1.使用多文件编辑,
定义商品信息:商品名称,商品单价,商品购买个数,商品描述,循环输入购买的商品,按单价排序,输出商品信息,计算最贵的商品以及一共花了多少钱?
在create函数,请实现在堆区申请内存5个连续的内存
在input函数,请实现循环输入购买的商品
在bubble函数,请实现按单价排序
在Max函数,计算最贵的商品名称
在Money函数,计算共花了多少钱
在output函数,请实现输出
在free_space函数。实现释放堆区内存
#include <stdio.h>
#include <stdlib.h>
struct goods
{
char name[10];
int price;
int num;
char describle[100];
};
void *create(struct goods*a);
void input(int n ,struct goods *a);
int * bubble(int n,int *B);
void MAX(int n,int*B);
void money(int n,int*B);
void output(int n,int*B);
void free_space(int *A);
int main(int argc, const char *argv[])
{
int n;
printf("请输入打算购买多少种类的商品:");
scanf("%d",&n);
struct goods a[n];
struct goods *p=a;
int *A=create(a);
int *B=input(n,a);
bubble(n,p);
MAX(n,p);
money(n,B);
free_space(A);
return 0;
}
void *create(struct goods*a)
{
struct goods *p=(struct goods *)malloc(sizeof(struct goods)*5);
if(p==NULL)
{
return p;
}
}
void input(int n ,struct goods *p)
{
for(int i=0;i<n;i++)
{
printf("请输入购买商品的名称:");
scanf("%s",(p+i)->name);
printf("请输该商品的单价分别为:");
scanf("%d",&(p+i)->price);
printf("请输入该商品购买的数量为:");
scanf("%d",&(p+i)->num);
printf("该商品的描述:");
scanf("%s",(p+i)->describle);
}
}
int * bubble(int n,int *p)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(*(p+j)>*(p+j+1))
{
int t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j)=t;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d ",(p+i)->price);
}
}
void MAX(int n,int*B)
{
int max=a[0].price;
for(int i=0;i<n;i++)
{
if(max<a[i].price)
{
max=a[i].price;
}
}
printf("最贵商品的名称:%s",a[i].name);
}
void money(int n,int*B)
{
sum+=((a[i].price)*(a[i].num));
}
void output(int n,int*B)
{
for(int i=0;i<n;i++)
printf("名称:%s\t单价:%d\t数量:%d\t描述:%s\n",a[i].name,a[i].price,a[i].num,a[i].describle);
}
void free_space(int *A)
{
free(A);
A=NULL;
}