#include<stdio.h>
#include<time.h>
#include<stdlib.h>
struct Apple
{
int attribute=0;
int flag=1;
};
int random()
{
int num;
srand((unsigned)time(NULL));
num=rand()%12;
return num;
}
void create_apple(struct Apple app1)
{
if(random()%2==1)
app1[random()].attribute=1;
else
app1[random()].attribute=-1;
printf("苹果的标号为1-12");
for(int i=1;i<=12;i++)
printf("%d ",i);
printf("\n");
printf("这12个苹果的属性分别为\n");
for(int i=1;i<=12;i++)
printf("%d ",app1[i].attribute);
printf("属性为0则说明苹果正常\n属性为-1则说明毒苹果较轻\n属性为1则说明毒苹果较重\n");
}
void set_apple(struct Apple app1)
{
int potion1,potion2,potion3;
int heap1=app1[9].attritute+app1[10].attritute+app1[11].attritute+app1[1].attritute;
int heap2=app1[2].attritute+app1[3].attritute+app1[5].attritute+app1[6].attritute;
for(int i=1;i<=4;i++)
potion1+=app1[i].attritute;
for(int i=5;i<=8;i++)
potion2+=app1[i].attritute;
for(int i=9;i<=12;i++)
potion3+=app1[i].attritute;
if(potion1==potion2)
{ printf("毒苹果在9,10,11,12中");
if(app1[9].attritute==app1[10].attritute)
{
printf("毒苹果在9,10中");
if (apple[11].state == apple[1].state)
apple[12].flag = 0;
else
apple[11].flag = 0;}
else {
if (apple[9].state == apple[1].state)
apple[10].flag = 0;
else
apple[9].flag = 0;
}
}
if (potion1>potion2)
{
if (heap1== heap2)
{
if (app1[7].attritute==app1[8].attritute)
app1[4].flag=0;
else {
if (app1[7].attritute<app1[8].attritute)
app1[7].flag=0;
else
app1[8].flag=0;
}
}
if (heap1>heap2)
{
if (app1[5].attritute==app1[6].attritute)
app1[1].flag=0;
else
{
if (app1[5].attritute<app1[6].attritute)
app1[5].flag=0;
else
app1[6].flag=0;
}
}
if (heap1<heap2)
{
if (app1[2].attritute>app1[3].attritute)
app1[2].flag=0;
else
app1[3].flag=0;
}
}
if (potion1<potion2)
{
if (heap1== heap2)
{
if (app1[7].attritute==app1[8].attritute)
app1[4].flag=0;
else {
if (app1[7].attritute>app1[8].attritute)
app1[7].flag=0;
else
app1[8].flag=0;
}
}
if (heap1>heap2)
{
if (app1[2].attritute==app1[9].attritute)
app1[3].flag=0;
else
app1[2].flag=0;
}
if (heap1<heap2)
{
if (app1[5].attritute=app1[6].attritute)
app1[1].flag=0;
else
if(app1[5].attritute==app1[9].attritute)
app1[6].flag=0;
else
app1[5].flag=0;
}
}
}int main()
{
int i=1;
struct Apple app1[20];
random();
create_apple(app1);
set_apple(app1);
while(app1[i].flag==0)
{
i++;
}
printf("有毒的是第%d个苹果",i);
}

这个地方引用中括号为什么会报错、
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 广大菜鸟 2021-09-23 01:37关注
#include<stdio.h> #include<time.h> #include<stdlib.h> typedef struct Apple { int attribute;//这里不能赋初始值 int flag; }Apple; int random() { int num; srand((unsigned)time(NULL)); num=rand()%12; return num; } void create_apple(struct Apple*app1) { if(random()%2==1) app1[random()].attribute=1; else app1[random()].attribute=-1; printf("苹果的标号为1-12"); for(int i=1;i<=12;i++) printf("%d ",i); printf("\n"); printf("这12个苹果的属性分别为\n"); for(int i=1;i<=12;i++) printf("%d ",app1[i].attribute); printf("属性为0则说明苹果正常\n属性为-1则说明毒苹果较轻\n属性为1则说明毒苹果较重\n"); } void set_apple(struct Apple* app1) { int potion1,potion2,potion3; int heap1=app1[9].attribute+app1[10].attribute+app1[11].attribute+app1[1].attribute;//属性写错attribute int heap2=app1[2].attribute+app1[3].attribute+app1[5].attribute+app1[6].attribute; for(int i=1;i<=4;i++) potion1+=app1[i].attribute; for(int i=5;i<=8;i++) potion2+=app1[i].attribute; for(int i=9;i<=12;i++) potion3+=app1[i].attribute; if(potion1==potion2) { printf("毒苹果在9,10,11,12中"); if(app1[9].attribute==app1[10].attribute) { printf("毒苹果在9,10中"); if (app1[11].flag == app1[1].flag)//apple 没有state属性 app1[12].flag = 0; else app1[11].flag = 0;} else { if (app1[9].flag == app1[1].flag) app1[10].flag = 0; else app1[9].flag = 0; } } if (potion1>potion2) { if (heap1== heap2) { if (app1[7].attribute==app1[8].attribute) app1[4].flag=0; else { if (app1[7].attribute<app1[8].attribute) app1[7].flag=0; else app1[8].flag=0; } } if (heap1>heap2) { if (app1[5].attribute==app1[6].attribute) app1[1].flag=0; else { if (app1[5].attribute<app1[6].attribute) app1[5].flag=0; else app1[6].flag=0; } } if (heap1<heap2) { if (app1[2].attribute>app1[3].attribute) app1[2].flag=0; else app1[3].flag=0; } } if (potion1<potion2) { if (heap1== heap2) { if (app1[7].attribute==app1[8].attribute) app1[4].flag=0; else { if (app1[7].attribute>app1[8].attribute) app1[7].flag=0; else app1[8].flag=0; } } if (heap1>heap2) { if (app1[2].attribute==app1[9].attribute) app1[3].flag=0; else app1[2].flag=0; } if (heap1<heap2) { if (app1[5].attribute=app1[6].attribute) app1[1].flag=0; else if(app1[5].attribute==app1[9].attribute) app1[6].flag=0; else app1[5].flag=0; } } }int main() { int i=1; struct Apple app1[20]; for(int i=0;i<20;i++) app1[i].attribute=0,app1[i].flag=1; random(); create_apple(app1); set_apple(app1); while(app1[i].flag==0) { i++; } printf("有毒的是第%d个苹果",i); system("pause"); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报