C语言用if和switch语句解决一个问题

2025-01-03 17:52:04
推荐回答(4个)
回答1:

我用的是vc,因为tc下中文不能显示。
区域应该都是矩形的,现在给出区域的左上角和右下角的顶点坐标:
A:(A1,A2),(A3,A4);
B:(B1,B2),(B3,B4);
C:(C1,C2),(C3,C4);
D:(D1,D2),(D3,D4);
O:(O1,O2),(O3,O4);
代码如下:
#include

#define
A1
0
/*开始定义各区域的坐标,我这里取简单的情况:区域为线性排列的,大小相等的正方形*/
#define
A2
0
#define
A3
100
#define
A4
100
#define
B1
100
#define
B2
0
#define
B3
200
#define
B4
100
#define
C1
200
#define
C2
0
#define
C3
300
#define
C4
100
#define
D1
300
#define
D2
0
#define
D3
400
#define
D4
100
#define
O1
400
#define
O2
0
#define
O3
500
#define
O4
100
/*区域设定结束*/
#define
X
0
#define
Y
1
void
main(void)
{
int
loc[2],flag;
/*我用数组来储存坐标*/
printf("请输入坐标:");
scanf("%d%d",&loc[X],&loc[Y]);
if(loc[X]>A1&&loc[Y]>A2&&loc[X]flag='A';
else
if(loc[X]>B1
&&
loc[Y]>B2
&&
loc[X]&&
loc[Y]flag='B';
else
if(loc[X]>C1
&&
loc[Y]>C2
&&
loc[X]&&
loc[Y]flag='C';
else
if(loc[X]>D1
&&
loc[Y]>D2
&&
loc[X]&&
loc[Y]flag='D';
else
if(loc[X]>O1
&&
loc[Y]>O2
&&
loc[X]&&
loc[Y]flag='O';
else
if(loc[X]==A1
||
loc[Y]==A2
||
loc[X]==A3
||
loc[Y]==A4)
flag=0;
else
if(loc[X]==B1
||
loc[Y]==B2
||
loc[X]==B3
||
loc[Y]==B4)
flag=0;
else
if(loc[X]==C1
||
loc[Y]==C2
||
loc[X]==C3
||
loc[Y]==C4)
flag=0;
else
if(loc[X]==D1
||
loc[Y]==D2
||
loc[X]==D3
||
loc[Y]==D4)
flag=0;
else
if(loc[X]==O1
||
loc[Y]==O2
||
loc[X]==O3
||
loc[Y]==O4)
flag=0;
else
flag=1;
switch(flag)
{
case
'A':
printf("\n你现在在A区,小心地雷");break;
case
'B':
printf("\n你现在在B区,小心有陷阱!");break;
case
'C':
printf("\n你现在在C区,小心敌人埋伏!");break;
case
'D':
printf("\n你现在在D区,可以补充武器!");break;
case
'O':
printf("\n你现在在O区,快去解救人质!");break;
case
0:
printf("\n你现在在两个区域的边界线上!");break;
case
1:
printf("\n你现在在任务区外!");break;
default:
printf("error");
}
getch();
}
不好意思,我刚学的C语言,可能代码质量不是很好。多多交流

回答2:

#include
"stdio.h"
/*
此处是gps定位函数
*/
char*
getplace(double
x,
double
y)
{
char*
returnvalue="你现在在两个区域的边界线上";
if(x>=0
&&
x<=75)
{
if
(y>45
&&
y<=60)
{
returnvalue="你现在在a区,小心地雷!";
}
else
if(y>=0
&&
y<=20)
{
returnvalue="你现在在c区,小心敌人埋伏!";
}
}

if
(y>20
&&
y<=45)
{
if(x>=0
&&
x<=20)
{
returnvalue="你现在在b区,小心有陷阱!";
}
else
if
(x>20
&&
x<=45)
{
returnvalue
=
"你现在在o区,快去解救人质!";
}
else
if
(x>50
&&
x<=75)
{
returnvalue
=
"你现在在d区,可以补充武器!";
}
}
return
returnvalue;
}
void
main()
{
double
x=0,y=0;
printf("请输入x坐标:\n");
scanf("%lf",&x);
printf("请输入y坐标:\n");
scanf("%lf",&y);
printf("%s",getplace(x,y));
//防止闪屏一下子消失
scanf("%lf",&x);
}

回答3:

这个我的手头上现在没有C的运行环境,我大概可以说一下,当然实现是比较简单的。
设置一个传参char
t;
你先输入坐标(scanf("%d,%d",&x,&y))(你可以用浮点型)
首先至于在哪个区域(是a,b,c,d等)你肯定有个判断的依据,这个是程序先前肯定得自己先定义。
用if判断if(x>0&&x<3y>0&&x<3)(假如这个是A区)
t='A'
以下下类推t=‘B’.....
边界也可以用if语句if(x=3&&y&&3||x=....)
t='F'
下面switch(t)
case
'A':
printf();break;
case
'B':printf();break;
.
.
.
case
'F'
:printf("您现在在两个区域边界上!");break;
default:printf("您现在在任务区域之外!");break;
大概是这么了。

回答4:

我用的是vc,因为tc下中文不能显示。

区域应该都是矩形的,现在给出区域的左上角和右下角的顶点坐标:
A:(A1,A2),(A3,A4);
B:(B1,B2),(B3,B4);
C:(C1,C2),(C3,C4);
D:(D1,D2),(D3,D4);
O:(O1,O2),(O3,O4);

代码如下:
#include
#define A1 0 /*开始定义各区域的坐标,我这里取简单的情况:区域为线性排列的,大小相等的正方形*/
#define A2 0
#define A3 100
#define A4 100
#define B1 100
#define B2 0
#define B3 200
#define B4 100
#define C1 200
#define C2 0
#define C3 300
#define C4 100
#define D1 300
#define D2 0
#define D3 400
#define D4 100
#define O1 400
#define O2 0
#define O3 500
#define O4 100 /*区域设定结束*/
#define X 0
#define Y 1
void main(void)
{
int loc[2],flag; /*我用数组来储存坐标*/
printf("请输入坐标:");
scanf("%d%d",&loc[X],&loc[Y]);
if(loc[X]>A1&&loc[Y]>A2&&loc[X] flag='A';
else if(loc[X]>B1 && loc[Y]>B2 && loc[X] flag='B';
else if(loc[X]>C1 && loc[Y]>C2 && loc[X] flag='C';
else if(loc[X]>D1 && loc[Y]>D2 && loc[X] flag='D';
else if(loc[X]>O1 && loc[Y]>O2 && loc[X] flag='O';
else if(loc[X]==A1 || loc[Y]==A2 || loc[X]==A3 || loc[Y]==A4)
flag=0;
else if(loc[X]==B1 || loc[Y]==B2 || loc[X]==B3 || loc[Y]==B4)
flag=0;
else if(loc[X]==C1 || loc[Y]==C2 || loc[X]==C3 || loc[Y]==C4)
flag=0;
else if(loc[X]==D1 || loc[Y]==D2 || loc[X]==D3 || loc[Y]==D4)
flag=0;
else if(loc[X]==O1 || loc[Y]==O2 || loc[X]==O3 || loc[Y]==O4)
flag=0;
else flag=1;

switch(flag)
{
case 'A':
printf("\n你现在在A区,小心地雷");break;
case 'B':
printf("\n你现在在B区,小心有陷阱!");break;
case 'C':
printf("\n你现在在C区,小心敌人埋伏!");break;
case 'D':
printf("\n你现在在D区,可以补充武器!");break;
case 'O':
printf("\n你现在在O区,快去解救人质!");break;
case 0:
printf("\n你现在在两个区域的边界线上!");break;
case 1:
printf("\n你现在在任务区外!");break;
default:
printf("error");
}
getch();
}

不好意思,我刚学的C语言,可能代码质量不是很好。多多交流