level 7
懂学的小鸟
楼主
下面代码中
有一句代码,一加上就蹦了,怎么回事啊?
大神帮忙看看呗
#include<stdio.h>
#include<string.h>
typedef struct _prop//商店结构体
{
int ID;
char name[50];
int stock; //存量
double price;//单价
char desc[500];//描述
}Prop;
typedef struct _bag//背包结构体
{
int playerID;
int count;//道具数量
int max;//道具插槽总数
Prop props[]; //商店数组
}Bag;
typedef struct _player //玩家结构体
{
int ID;
char name[50];
char pass[50];
double gold;//金币
Bag bag;//背包
}Player;
void init();//初始化
void showprop();//打印商品
void showplayer();//打印玩家
void Trade(Player *player , int propid);
void chakanbag();
Prop *props;//商品指针
Player *players;//玩家指针
int count;
int main()
{
init();
printf("交易前-----------------\n");
showprop();
showplayer();
Trade(&players[0],1);
printf("交易后-----------------\n\n\n");
showprop();
showplayer();
chakanbag();
return 0;
}
void init ()
{
static Prop proparry[]={
{1,"低阶经验丹",5,100,"使用后增加50点经验"},
{2,"木剑",2,300,"装备增加10点攻击"}
};
count = sizeof (proparry) / sizeof (Prop);
props=proparry;
static Player playerarry[]={
{1,"魔戒","123456",1000,},
};
players=playerarry;
players[0].bag.max=8;
}
void showprop()
{
if (props!=NULL)
{
printf ("%-4s%-12s%s\t%s\t%s","编号","名称","数量","价格","描述\n");
for (int i=0;i<count;i++)
{
printf ("%-4d%-12s%-10d%-8.2lf%s\n",props[i].ID,props[i].name,props[i].stock,props[i].price,props[i].desc);
}
}
}
void showplayer()
{
printf ("ID:%d\n名称:%s\n金币:%.2lf\n",players[0].ID,players[0].name,players[0].gold);
}
void Trade(Player *player , int propid)
{
int i=0;
Prop *tradeprop=NULL;
for (i=0;i<count;i++)//获取物品信息
{
if (propid==props[i].ID)
{
tradeprop=&props[i];
break;
}
}
if (tradeprop->stock<=0)
printf("存货不足无法购买!!!\n");
else if (players[0].gold<tradeprop->price)
printf("**!没钱就滚吧!\n");
else if (players[0].bag.count>=players[0].bag.max)
printf ("大爷您背包满了,请清理空间!!!\n");
else {
int id = players[0].bag.count;//玩家背包数量
players[0].gold-=tradeprop->price;
tradeprop->stock--;
// players[0].bag.props[id].ID=tradeprop->ID;
//加上这条命令之后蹦了
printf("购买成功!\n");
}
/*
tradeprop->stock--;//商品-1
players->gold -= tradeprop->price;
printf("购买成功!\n");
for (i=0;i<players->bag.count;i++)
{
if (propid==players->bag.props[i].ID)
{
players->bag.props[i].stock++;
}
}
if (i==players->bag.count)
{
int id = players->bag.count;
players->bag.props[id].ID=tradeprop->ID;
players->bag.props[id].price=tradeprop->price;
players->bag.props[id].stock=1;
strcpy(players->bag.props[id].name,tradeprop->name);
strcpy(players->bag.props[id].desc,tradeprop->desc);
players->bag.count++;
}
*/
}
void chakanbag()
{
printf ("背包\n");
printf ("%-4s%-12s%s\t\t%s","编号","名称","数量","描述\n");
for (int i;i<players[0].bag.count;i++)
{
printf("%d%s%d%s\n",players[0].bag.props[i].ID,players[0].bag.props[i].name,players[0].bag.props[i].stock,players[0].bag.props[i].desc);
}
下面是加上那句代码的图片

2019年04月14日 06点04分
1
有一句代码,一加上就蹦了,怎么回事啊?
大神帮忙看看呗
#include<stdio.h>
#include<string.h>
typedef struct _prop//商店结构体
{
int ID;
char name[50];
int stock; //存量
double price;//单价
char desc[500];//描述
}Prop;
typedef struct _bag//背包结构体
{
int playerID;
int count;//道具数量
int max;//道具插槽总数
Prop props[]; //商店数组
}Bag;
typedef struct _player //玩家结构体
{
int ID;
char name[50];
char pass[50];
double gold;//金币
Bag bag;//背包
}Player;
void init();//初始化
void showprop();//打印商品
void showplayer();//打印玩家
void Trade(Player *player , int propid);
void chakanbag();
Prop *props;//商品指针
Player *players;//玩家指针
int count;
int main()
{
init();
printf("交易前-----------------\n");
showprop();
showplayer();
Trade(&players[0],1);
printf("交易后-----------------\n\n\n");
showprop();
showplayer();
chakanbag();
return 0;
}
void init ()
{
static Prop proparry[]={
{1,"低阶经验丹",5,100,"使用后增加50点经验"},
{2,"木剑",2,300,"装备增加10点攻击"}
};
count = sizeof (proparry) / sizeof (Prop);
props=proparry;
static Player playerarry[]={
{1,"魔戒","123456",1000,},
};
players=playerarry;
players[0].bag.max=8;
}
void showprop()
{
if (props!=NULL)
{
printf ("%-4s%-12s%s\t%s\t%s","编号","名称","数量","价格","描述\n");
for (int i=0;i<count;i++)
{
printf ("%-4d%-12s%-10d%-8.2lf%s\n",props[i].ID,props[i].name,props[i].stock,props[i].price,props[i].desc);
}
}
}
void showplayer()
{
printf ("ID:%d\n名称:%s\n金币:%.2lf\n",players[0].ID,players[0].name,players[0].gold);
}
void Trade(Player *player , int propid)
{
int i=0;
Prop *tradeprop=NULL;
for (i=0;i<count;i++)//获取物品信息
{
if (propid==props[i].ID)
{
tradeprop=&props[i];
break;
}
}
if (tradeprop->stock<=0)
printf("存货不足无法购买!!!\n");
else if (players[0].gold<tradeprop->price)
printf("**!没钱就滚吧!\n");
else if (players[0].bag.count>=players[0].bag.max)
printf ("大爷您背包满了,请清理空间!!!\n");
else {
int id = players[0].bag.count;//玩家背包数量
players[0].gold-=tradeprop->price;
tradeprop->stock--;
// players[0].bag.props[id].ID=tradeprop->ID;
//加上这条命令之后蹦了
printf("购买成功!\n");
}
/*
tradeprop->stock--;//商品-1
players->gold -= tradeprop->price;
printf("购买成功!\n");
for (i=0;i<players->bag.count;i++)
{
if (propid==players->bag.props[i].ID)
{
players->bag.props[i].stock++;
}
}
if (i==players->bag.count)
{
int id = players->bag.count;
players->bag.props[id].ID=tradeprop->ID;
players->bag.props[id].price=tradeprop->price;
players->bag.props[id].stock=1;
strcpy(players->bag.props[id].name,tradeprop->name);
strcpy(players->bag.props[id].desc,tradeprop->desc);
players->bag.count++;
}
*/
}
void chakanbag()
{
printf ("背包\n");
printf ("%-4s%-12s%s\t\t%s","编号","名称","数量","描述\n");
for (int i;i<players[0].bag.count;i++)
{
printf("%d%s%d%s\n",players[0].bag.props[i].ID,players[0].bag.props[i].name,players[0].bag.props[i].stock,players[0].bag.props[i].desc);
}
下面是加上那句代码的图片

