请求大神进来帮帮忙,搞了好久真的不知道哪里出错了,帮帮忙吧。谢谢
#include <stdio.h> /*标准输入输出函数库*/ #include <stdlib.h> /*标准函数库*/
#include <string.h> /*字符串函数库*/
#include <conio.h> /*屏幕操作函数库*/
#define HEADER1 " -------------------------------商品信息-----------------------------------\n"
#define HEADER2 " | 编号 | 类型 | 名称 | 进货价 | 单价 | 进货量 | 售出量 | 库存 | 利润 | \n"
#define HEADER3 " |-------|-------|-------|--------|-------|--------|--------|-------|--------|\n"
#define FORMAT " | %-10s| %-10s| %-10s| %-10s | %-10s | %-10s | %-10s| %-10s | %-10s |\n"
#define DATA " p->num,p->type,p->name,p->jinhuojia,p->danjia,p->purchase,p->sale,p->stock,p->lirun\n"
#define END " ---------------------------------------------------------------------------\n"
#define N 100
#define LEN sizeof(struct shop )
int saveflag=0;
struct shop
{ char num[4]; //编号
char type[10]; //类型
char name[10]; //名称
float jinhuojia; //单价
float danjia; //售价
int purchase; //进货量
int sale; //售出量
int stock; //库存
float lirun; //利润
struct shop *next;
};
int n;
struct shop *creat(void)//定义函数,此函数返回一个指向链表头的指针
{ struct shop*head;
struct shop*p1,*p2,*p3;
int i,a;
//system("cls");//清屏
n=0;
p1=p2=p3=(struct shop*)malloc(LEN);//开辟一个新单元
head=p3;
repeat1:printf("请输入7位商品编号(按0返回上一界面):");
scanf("%d",&p1->num);
if(p1->num==0)
goto end;
else
{
while(p1->num<1000000||p1->num>=10000000)
{
printf("输入错误!请重新输入!");
goto repeat1;
}
p3=head;
if(n>0)
{
for(i=0;i<n;i++)
{
if(p1->num!=p3->num)
p3=p3->next;
else
{
printf("编号重复,请重新输入!\n");
goto repeat1;
}
}
}
}
printf("请输入商品名称:");
scanf("%s",&p1->name);
printf("请输入商品类型:");
scanf("%s",&p1->type);
printf("请输入商品进货价:");
scanf("%d",&p1->jinhuojia);
while(p1->jinhuojia<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->jinhuojia);
}
printf("请输入商品单价:");
scanf("%d",&p1->danjia);
while(p1->danjia<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->danjia);
}
printf("请输入商品进货量:");
scanf("%d",&p1->purchase);
while(p1->purchase<0)
{
printf("输入错误,请重新输入!\n");
scanf("%d",&p1->purchase);
}
printf("请输入商品售出量:");
scanf("%d",&p1->sale);
while(p1->sale<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->sale);
}
a=((p1->purchase)-(p1->sale))*((p1->danjia)-(p1->jinhuojia));
printf("商品的利润为:%d",a);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct shop*)malloc(LEN);
repeat2:printf("请输入7位数商品编号(按0返回上一界面):");
scanf("%d",&p1->num);
if(p1->num==0)
goto end;
else
{
while(p1->num<1000000||p1->num>=10000000)
{
printf("输入错误!请重新输入!\n");
goto repeat2;
}
}
p3=head;
if(n>0)
{
for(i=0;i<n;i++)
{
if(p1->num!=p3->num)
p3=p3->next;
else
{
printf("编号重复,请重新输入!\n");
goto repeat2;
}
}
}
}
printf("请输入商品名称:");
scanf("%s",&p1->name);
printf("请输入商品类型:");
scanf("%s",&p1->type);
printf("请输入商品进货价:");
scanf("%d",&p1->jinhuojia);
if(p1->jinhuojia<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->jinhuojia);
}
printf("请输入商品单价:");
scanf("%d",&p1->danjia);
while(p1->danjia<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->danjia);
}
printf("请输入商品进货量:");
scanf("%d",&p1->purchase);
while(p1->purchase<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->purchase);
}
printf("请输入商品售出量:");
scanf("%d",&p1->sale);
while(p1->sale<0)
{
printf("输入错误,请重新输入!");
scanf("%d",&p1->sale);
}
a=((p1->purchase)-(p1->sale))*((p1->danjia)-(p1->jinhuojia));
printf("商品的利润为:%d",a);
end:p1=head;
p3=p1;
p2->next=NULL;//链表结尾
return(head);
}
main()
{ struct shop*pt;
pt=creat();
}