思维导图&笔记
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)