kjwyzz 2021-09-23 01:03 采纳率: 85.7%
浏览 96
已结题

这个地方引用中括号为什么会报错、


#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);
}

  • 写回答

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");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月1日
  • 已采纳回答 9月23日
  • 创建了问题 9月23日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真