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; }
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',所以一直会输出这句话:"你现在在两个区域的边界线上!"。
答:因为程序一直在while中一直循环。没有出循环,所以肯定在输出页面上面没有结果啊,循环变量m一直没有发生变化,一直是你输入的那个数,若输入的数大于等于1的话,就...详情>>
答:我建议你去--天下网吧联盟 这里面都是网吧业主和网管交流的论坛,你可以自己注册一个用户进去看看,你可以和他们交流也可以寻求他们的帮助,我想没有你解决不了的问题,...详情>>
答:格式化文本区域的段落标记,用于规定文本和层的属性和位置等。比如: 新浪网 用来规定 新浪网 这三个字居中显示。 文本中心(CENTER)、左(LEFT)或右(R...详情>>