格格家的格格巫 2019-11-19 17:43 采纳率: 0%
浏览 132

求求求!!各位大佬,这是为啥呀,为啥输入了两个图形,显示的图形信息只有一个呀

#include <stdio.h>
#include <stdlib.h>
#define N 35
typedef struct zhixian
{
    int x1,y1;
    int x2,y2;
}Z;
typedef struct dian
{
    int x,y;
}D;
typedef struct juxing
{
    int x1,y1;
    int x2,y2;
}J;
typedef struct yuanxing
{
    int x,y;
    int r;
}Y;
typedef struct tuoyuan
{
    int x,y;
    int a,b;
}T;
union tuxing
{
    T tuo;
    Y yuan;
    J juxing;
    Z zhixian;
    D dian;
    int kind;
};
int main()
{
    union tuxing ch[100];
    int flag1 = 1,flag2 = 1,flag3 = 1,flag4 = 1;
    int i = 0,j = 0;
    int count = 0;
    int t;
    char c2;
    while(1)
    {
        start:printf("Add/List/Delete/Quit\n");
        printf("输入首字母选择功能:");
        char c;
        scanf("%c",&c);
        system("cls");
        switch(c)
        {
        case 'A':
        case 'a':
            printf("Line/Rectangle/Circle/Ellipsc\n");
            printf("输入首字母选择要添加的图形类型,按ESC返回:\n");
            char c1;
            scanf(" %c",&c1);
            system("cls");
            switch(c1)
            {
            case 'L':
            case 'l':
                if(flag1)
                {
                    printf("请输入直线的两个端点:x1,y1,x2,y2并按回车\n");
                    scanf("%d%d%d%d",&ch[i].zhixian.x1,&ch[i].zhixian.y1,&ch[i].zhixian.x2,&ch[i].zhixian.y2);
                    printf("一条直线已被添加!按任意键继续。。。\n");
                    count++;
                    printf("count = %d\n",count);
                    ch[i].kind = 1;
                    flag1= 0;
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
                else
                {
                    printf("请输入直线的两个端点:x1,y1,x2,y2并按回车\n");
                    printf("一条直线已被添加!按任意键继续。。。\n");
                    printf("count = %d\n",count);
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
                break;
            case 'R':
            case 'r':
                if(flag2)
                {
                    printf("请输入矩形的左上角与右下角的坐标:x1,y1,x2,y2并按回车\n");
                    scanf("%d%d%d%d",&ch[i].juxing.x1,&ch[i].juxing.y1,&ch[i].juxing.x2,&ch[i].juxing.y2);
                    printf("一条矩形已被添加!按任意键继续。。。\n");
                    ch[i].kind = 2;
                    count++;
                    printf("count = %d\n",count);
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    flag2= 0;
                    goto start;
                }
                else
                {
                    printf("请输入直线的两个端点:x1,y1,x2,y2并按回车\n");
                    printf("一条矩形已被添加!按任意键继续。。。\n");
                    printf("count = %d\n",count);
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
                break;
            case 'C':
            case 'c':
                if(flag3)
                {
                    printf("请输入圆心坐标和半径:x1,y1,r并按回车\n");
                    scanf("%d%d%d",&ch[i].yuan.x,&ch[i].yuan.y,&ch[i].yuan.r);
                    printf("一条圆形已被添加!按任意键继续。。。\n");
                    ch[i].kind = 3;
                    count++;
                    printf("count = %d\n",count);
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    flag3= 0;
                    goto start;
                }
                else
                {
                    printf("请输入圆心坐标和半径:x1,y1,r并按回车\n");
                    printf("一条圆形已被添加!按任意键继续。。。\n");
                    scanf("%c",&c2);
                    printf("count = %d\n",count);
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
                break;
            case 'E':
            case 'e':
                if(flag4)
                {
                    printf("请输入椭圆中心坐标,半长轴和半短轴:x,y,a,b并按回车\n");
                    scanf("%d%d%d%d",&ch[i].tuo.x,&ch[i].tuo.y,&ch[i].tuo.a,&ch[i].tuo.b);
                    printf("一条椭圆已被添加!按任意键继续。。。\n");
                    scanf(" %c",&c2);
                    scanf("%c",&c2);
                    ch[i].kind = 4;
                    count++;
                    printf("count = %d\n",count);
                    system("cls");
                    flag4= 0;
                    goto start;
                }
                else
                {
                    printf("请输入椭圆中心坐标,半长轴和半短轴:x,y,a,b并按回车\n");
                    printf("一条椭圆已被添加!按任意键继续。。。\n");
                    printf("count = %d\n",count);
                    getchar();

                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
                break;

            }
            break;
        case 'D':
        case 'd':
            if(count!=0)
            {
                for(i = 0;i<count;i++)
                {
                    printf("请输入要删除的图形的ID号或按ESC返回:");
                    scanf("%d",&t);
                    if(t>=0&&t<count)
                    {
                        if(t==1)
                        {
                            flag1 = 0;
                        }
                        else if(t==2)
                        {
                            flag2 = 0;
                        }
                        else if(t==3)
                        {
                            flag3 = 0;
                        }
                        else if(t==4)
                        {
                            flag4 = 0;
                        }
                        for(j = t;j<count;j++)
                        {
                            if(ch[j+1].kind == 1)
                            {
                                ch[j].kind = 1;
                                ch[j].zhixian.x1 = ch[j+1].zhixian.x1;
                                ch[j].zhixian.y1 = ch[j+1].zhixian.y1;
                                ch[j].zhixian.x2 = ch[j+1].zhixian.x2;
                                ch[j].zhixian.y2 = ch[j+1].zhixian.y2;

                                count--;
                            }
                            else if(ch[j+1].kind == 2)
                            {
                                ch[j].kind = 2;
                                ch[j].juxing.x1 = ch[j+1].juxing.x1;
                                ch[j].juxing.y1 = ch[j+1].juxing.y1;
                                ch[j].zhixian.x2 = ch[j+1].zhixian.x2;
                                ch[j].zhixian.y2 = ch[j+1].zhixian.y2;

                                count--;
                            }
                            else if(ch[j+1].kind == 3)
                            {
                                ch[j].kind = 3;
                                ch[j].yuan.x = ch[j+1].yuan.x;
                                ch[j].yuan.y = ch[j+1].yuan.y;
                                ch[j].yuan.r = ch[j+1].yuan.r;
                                count--;
                            }
                            else if(ch[j+1].kind == 4)
                            {
                                ch[j].kind = 4;
                                ch[j].tuo.x = ch[j+1].tuo.x;
                                ch[j].tuo.y = ch[j+1].tuo.y;
                                ch[j].tuo.a = ch[j+1].tuo.a;
                                ch[j].tuo.b = ch[j+1].tuo.b;
                                count--;
                            }
                        }
                        printf("ID为%d的图形被删除!\n",t);
                        scanf(" %c",&c2);
                        scanf("%c",&c2);
                        system("cls");
                        goto start;
                    }
                    else
                    {
                        printf("No found!");
                    }
                    scanf("%c",&c2);
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                }
            }
            else
            {
                printf("请按任意键继续。。");
                getchar();
                scanf("%c",&c2);
                system("cls");
                goto start;
            }
            break;
        case 'Q':
        case 'q':
            goto end;
            break;
        case 'L':
        case 'l':
            while(j<count)
            {
                    if(ch[j].kind ==1)
                        {
                            printf("ID=%d,直线:端点坐标为x1=%d, y1=%d, x2=%d, y2=%d",j,ch[j].zhixian.x1, ch[j].zhixian.y1,ch[j].zhixian.x2,ch[j].zhixian.y2);
                        }
                    else if (ch[j].kind ==2)
                       {
                            printf ("ID=%d,矩形:左上角坐标为: xl=%d, yl=%d;右下角坐标为:x2=%d, y2=%d",j,ch[j].juxing.x1,ch[j].juxing.y1,ch[j].juxing.x2,ch[j].juxing.x2);
                       }
                    else if (ch[j] .kind ==3)
                       {
                            printf ("ID=%d,圆形:圆心坐标为: x=%d, y=%d;半径为:r=%d",j,ch[j].yuan.x,ch[j].yuan.y,ch[j].yuan.r);
                       }
                    else if (ch[j].kind ==4)
                        {
                            printf ("ID=%d,椭圆:中心坐标为。x=%d, y=%d;半长轴为:a=%d,半短轴为:b=%d",j,ch[j].tuo.x,ch[j].tuo.y,ch[j].tuo.a,ch[j].tuo.b);
                        }
                    j++;
            }
                    getchar();
                    scanf("%c",&c2);
                    system("cls");
                    goto start;
                    break;
        }
        i++;
    }
    end:return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 有赏,i卡绘世画不出
    • ¥15 如何用stata画出文献中常见的安慰剂检验图
    • ¥15 c语言链表结构体数据插入
    • ¥40 使用MATLAB解答线性代数问题
    • ¥15 COCOS的问题COCOS的问题
    • ¥15 FPGA-SRIO初始化失败
    • ¥15 MapReduce实现倒排索引失败
    • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
    • ¥15 找一位技术过硬的游戏pj程序员
    • ¥15 matlab生成电测深三层曲线模型代码