爱问知识人 爱问教育 医院库

C语言问题

首页

C语言问题

为什么没有错误却运行不下去了呢?
题目的要求是这样的:

有一位超级战士被空降到一个未知的地区,该战士带有一个GPS接收机和PDA设备。该地区中有5个特殊的区域:A区、B区、C区、D区、O区。该地区的示意地图如下图所示。(略,不影响程序)

其中,A区为雷区,B区中有陷阱,C区中有埋伏,D区为武器库,O区为人质区。
该战士携带的GPS接收机,可以告诉他降落地点的经纬度坐标(用X, Y表示)。若将由GPS接收机显示的坐标值输入到他的PDA中,PDA中会显示出他所在的区域。

如果他的位置在A区,则PDA上会显示“你现在在A区,小心地雷!”;
如果他的位置在B区,则PDA上会显示“你现在在B区,小心有陷阱!”;
如果他的位置在C区,则PDA上会显示“你现在在C区,小心敌人埋伏!”;
如果他的位置在D区,则PDA上会显示“你现在在D区,可以补充武器!”;
如果他的位置在O区,则PDA上会显示“你现在在O区,快去解救人质!”;
如果他在上述5个区之外,则PDA上会显示“你现在在任务区外!”;
如果落在两个区域的边界线上,则PDA上会显示“你现在在两个区域的边界线上!”;
请你用C语言编程实现上面的PDA中的程序功能。

我的程序:


#include "stdafx.h"
#include "stdio.h"

int main(int argc, char* argv[])

{

float x,y;
char zone;

printf("请输入超级战士所在的X坐标:\n\n");
   scanf("%f",&x);
printf("请输入超级战士所在的Y坐标:\n\n");
   scanf("%f",&y);

if (x==20,45,60||y==20,50,75){   //在边界上s
     zone=6;     
     }

else if(x>75||y>60){    //任务区外t
  zone=5;
}


else if(y<60&&y>45){   //A区
    zone=1;
}

  
else if(y<20&&y>0){   //C区
  zone=3;
}

else if(x<20&&x>0){   //B区
  zone=2;
}

else if(x<50&&x>20){   //O区
  zone=0;
}


else if(x<75&&x>50){   //D区
  zone=4;
}

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

return 0;
}

提交回答
好评回答
  • 2008-04-03 23:04:34
    LZ的代码的确有问题,但是仍然会运行结束,只不过在界面上没有任何输出罢了,因为没有满足输出的任何一个条件。
    1、首先变量x和y声明类型最好为int整型,因为代码中关系表达式用的是整数,而且输入时一般也都是整型数据。
    2、变量zone为char型,但是后面的赋值语句如:zone=6;不正确,应该写为:zone='6';
    3、第一个IF条件 if (x==20,45,60||y==20,50,75)存在严重的逻辑错误。括号之中是两个逗号表达式,前面的表达式x==20,45,60 最终结果是60,当然这个结果没有赋给任何变量,但它是一个非0值,为真,满足逻辑条件,逻辑或||后面的表达式,程序不会计算。所以这个条件永远满足,不管你输入什么,zone值都是'6',所以一直会输出这句话:"你现在在两个区域的边界线上!"。
    

    心***

    2008-04-03 23:04:34

类似问题

换一换
  • 程序设计 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):