#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 提建议
- 追加酬金
- 关注问题
- 邀请回答
-