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;
printf(&请输入超级战士所在的X坐标:\n\n&);
scanf(&%f&,&x);
printf(&请输入超级战士所在的Y坐标:\n\n&);
scanf(&%f&,&y);
if (x==20,45,60||y==20,50,75){
//在边界上s
else if(x&75||y&60){
//任务区外t
else if(y&60&&y&45){
else if(y&20&&y&0){
else if(x&20&&x&0){
else if(x&50&&x&20){
else if(x&75&&x&50){
switch(zone){
case&1&:printf(&你现在在A区,小心地雷!\n&);
case&2&:printf(&你现在在B区,小心有陷阱!\n&);
case&3&:printf(&你现在在C区,小心敌人埋伏!\n&);
case&4&:printf(&你现在在D区,可以补充武器!\n&);
case&0&:printf(&你现在在O区,快去解救人质!\n&);
case&5&:printf(&你现在在任务区外!\n&);
case&6&:printf(&你现在在两个区域的边界线上!\n&);
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',所以一直会输出这句话:"你现在在两个区域的边界线上!"。
回答数:1536[求助]数据结构课程设计(C语言):货场车皮的编序问题_百度知道
[求助]数据结构课程设计(C语言):货场车皮的编序问题
不胜感激了!;接下来的1行是一个字符串。数据输出,X表示其时栈号,文件的第一行使最少移动次数m;右边轨道为出口,其中左边轨道为车皮入口,想高手们给出具体的思路算法。实现要求,编号为D。每次移动用“cXY”的3个字符表示,最好能写上代码!问题, b!:将计算得到的最优调度方案输出到文件output,2条轨道连接到2条侧轨道!,调度室要安排个车皮进出栈次序。如果无法调度则输出“No Solution,其中c表示车皮编号,编号为A。车皮移动时只能按照从左到右的方向移动。编号为a;2个铁路转轨栈分别编号为C和D如下图所示,使得移动车皮的次数最少。第一行有1个正整数n,编程计算最优调度方案,应该算比较容易那类了(对我则不然),表示预先确定的车皮的出站顺序, ┅,形成2个铁路转轨栈,使得在出口处各车皮按照预先制定的顺序依次出站.txt,接下来的m行使对于最优方案的m次移动,Y表示目标栈号:对于给定的车皮数n, n的各车皮依序停放在车皮的入口处!:由文件input.txt给出数据。数据输入这个是使用C语言的数据结构课程设计题目,以及各车皮的出站顺序,表示车皮数,是分配3人做的, c:在火车货场车皮编解场
膜拜!!.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://c.baidu!不过本人实在是愚笨到没有注释根本看不明白的地步-&-!<a href="http!./zhidao/pic//zhidao/wh%3D600%2C800/sign=ddee8817674cebe89b6://c.hiphotos.baidu.jpg" esrc="/zhidao/wh%3D450%2C600/sign=406d5e35b3de9c82a630f18b59b1ac3c/eccebe89b62楼实在太强大了://c
提问者采纳
} if ( b == d ) {
*++D,c.end--;&#92;;}void ReadData ( void ){n&
Calc ( d ); fclose ( fp ).;char res[LEN]; Show ( A; ); ); if ( total &%s&n&quot.end &gt随便测试了点数据;data = (Data*) malloc ( len * sizeof(Data) );
p += sprintf (%cAD&#92, c ); fscanf ( fp, b ); count )
min = count.end = fp = fopen ( & } if (
A; Init ( &B;%cAB&#92;
*++C; ns = 1,C; for ( i = 1;n&
Calc ( d + 1 ).data[i] ) end = A;;tB, tmp ).end--; if ( C, tmp[LEN];D= A;
D; } printf ( &%cAC&#92;
C; Show ( D;%cBC&#92.#include &lt.end = free ( D: & if ( B; tmp + LEN ) {
fprintf ( } Init ( &A;
p += sprintf (
exit ( __COUNTER__ ); );
} } count++; if ( a == d ) {
*++D.end--;n&
A; memset ( a-&gt, & } if ( c == d ) {
*++D, &quot,b;stdio, total ); if ( d == end ) {
if ( min &; else
sprintf (%cBD&#92;;= C; } A; if ( fp == NULL ) {
fclose ( fp ).end--.h&gt.end =;, tmp );
Calc ( d + 1 );
A!; FILE * Show ( C;
B, A; while ( p &
B;Stack A.data.;, a );
p += sprintf (;%s&
p -= 4;&#92;
Calc ( d + 1 ); A; fprintf ( free ( C, 没发现有什么错误, a ).end++;Data head.data );
A.end = A, a-&;}Stack.h&gt, Init ( &D; pc = tmp = (char*) malloc ( total + 1 ); end = head = A; );}void Show ( S
Calc ( d ), &total ), int len ){ a-&gt.end++.data[i], &
*++B;typedef struct Stack{ Data *data!= 0;}void Calc ( Data d ){ if ( p &gt.end--;n&end = a-&= a, total+1 ), & free ( B; fscanf (, total+1 );%s&quot, & else
Calc ( d ), &quot, &
p += sprintf ( p: &
p += sprintf ( p, &quot, a ).txt&%cCD&#92, res ).data[i] , char *s ){ char *D free ( A.data ), &
return!&#92;}void End ( void ){ FILE *&#92.data ).data )
c = *C.end++.end--;
B;No Sdata - 1, & ).data )
a = *A, &quot.data + i - 1.data ),B;
count--; if ( A, &
C; );%s%s&
return.end++;= B!= EOD ) {
Data tmpA =n&quot,D.end--;}void main ( void ){ ReadData();#define EOD (127)void Init ( Stack *a;n%s&
if ( end &r&quot, & *pc = 0;
D, &quot.end = a, tmp );tC; Init ( &C;
D!= EOD ) {
*++C;int total.end--, &quot!&#92.data )
b = *B.end )
*pc++ = *p++.end &
exit ( __COUNTER__ );.end &gt, &quot: &
p -= 4; a = b = c = EOD;w&%d&quot, 0, tmp.end = a, & fclose ( fp ).txt&;;tD; );n&
C.data[0];; Show ( B. printf ( &
C;unsigned long min = 0x7FFFFFFF;===================================&#92; end++; Calc( head );nA; ): &
return, & 1 ) {
fclose ( fp );
p += sprintf (
p -= 4.end++;n&output.data ), *p = tmp. } if ( min == 0x7FFFFFFF )
p -= 4, len * sizeof(Data) ); i++ ) {
if ( head & fprintf ( fp, total+1 ); } if ( A; if ( fp == NULL )
exit ( __COUNTER__ ); End().end--; fp = fopen ( & else
a = EOD;%d&#92; );
count--, &
p -= 4; Data *n& char *p = (char*)a.data[i];&#92.end = b, b ); } count--.end, s ); A;
B.end--.end--;#include & else
c = EOD.data[i] ) head = A, *
a = tmpA;#define LEN 16384typedef char Data
提问者评价
分数乃是浮云~~anyway很感谢你的帮助!!!!!
其他类似问题
数据结构课程设计的相关知识
按默认排序
其他2条回答
没有图……
```````````````````````````````````````````````````````` ``````````````````````````````````````````
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁17:02:52【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"C语言程序问题,望各路神仙指教!"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"C语言程序问题,望各路神仙指教!"相关的详细问题如下: 程序如下:&br&#include &stdio.h&&br&main()&br&{&br& int x=0177;&br& printf(&x=%-3d,x=%-6d,x=&#36;%-06d,x=&#36;%06d,x=%%06d\n&,x,x,x,x,x);&br&}&br&输出结果是什么?一一解释一下语句 printf(&x=%-3d,x=%-6d,x=&#36;%-06d,x=&#36;%06d,x=%%06d\n&,x,x,x,x,x);的含义 。&br&多谢了~~ ===========突袭网收集的解决方案如下===========
解决方案1:int x=0177这一句是给x赋值(以“0&开头,表示八进制177)printf()是输出语句 其中%是格式控制符标志 d表示以十进制整数显示 -表示左对齐没有就是右对齐数字代表显示位宽 x=%-3d, x=直接显示 %-3d为格式控制符 表示数要以十进制整数显示左对齐不足3位的话右边补空格,&,&原样显示。 x=%-6d 同上 唯一不同就是十进制整数左对齐不足六位右边补空格x=$%-06d这个x=$原样显示十进制六位左对齐不足右边补空格x=$%06d x=$原样显示 十进制 右 对齐 不足左边补零x=%%06d\n 这句中x=原样显示%%是显示% 06d原样显示 \n表示换行即回车五个格式控制按顺序一一对应引号外五个数输出结果为:x=127,x=127***,x=$127***,x=$000127,x=%06d*代表空格 末尾换行。解决方案2:&%表示显示结果的变动。%-3d中"-"表示右对齐,%-3d表示将x的值以3位数的形式输出,若x不足3位,则在前面补空格,即右对齐。如果不加"-",则使用默认的左对齐方式,在后面补空格。
================可能对您有帮助================
问:程序如下: #include "stdio.h" main() { int x=0177; printf("x=%-3d,x...答:int x=0177这一句是给x赋值(以“0"开头,表示八进制177) printf()是输出语句 其中%是格式控制符标志 d表示以十进制整数显示 -表示左对齐没有就是右对齐 数字代表显示位宽 x=%-3d, x=直接显示 %-3d为格式控制符 表示数要以十进制整数显示左对齐...===========================================问:#include "stdio.h" main() { int a,b,c; a=1,b=2,c=3; if (a==1&&b++==...答:不会 ( 表达式1 || 表达式2 ) 先 判断 表达式1, 如果 表达式1 成立, 则 不再判断 表达式2 如果 表达式1 不成立, 则 再判断表达式2 希望对您有帮助.===========================================问:if (a&30) m=1; else if (a&40) m=2; else if (a&50) m=3; else if (a&6...答:提示 a/10===========================================问:a||b+c&&b-c这个表达式,是先执行a||b结果再+c还是先b+c结果再进行a||?...答:优先级只能表明哪两个式子先结合起来,本表达式中+和-优先级高于||和&&,所以表达式等价于: a||(b+c)&&(b-c) 那么运算的话是: 1. 计算a,如果a为真(即非0),则后面式子不用计算了,整个表达式直接为真 2. a为0,则计算b+c,如果b+c为假(即0...===========================================问:如下所示: #include "stdio.h" main() { int a=1,b=0; printf("%d,%d\n...答:这个问题没有意义. 因为 "C++语言规范并未规定函数的参数计算顺序, 由编译器自行决定". 也就是说, 你的第一个printf中, 编译器有可能先计算a = 2*b, 也有可能先计算b =a+b. 所以不同编译器答案会不一样, 同样的编译器优化级别不同也可能不一样. ...===========================================问:4、以下程序的输出结果是 d 。 #include &stdio.h& int k = 1; void mai...答:D是没错的呀 ,调用了2次 Fun() 每次都输出 1 ,然后最后 printf("k=%d", k);输出 的是全局的k===========================================问:void example () { char acNew[20]; for(i=0;i&10;i++) { acNew[...答:1) 输出不确定。 char acNew[20];没有给数组赋初值, 而strlen()给出的是从数组开始到'\0'为止的长度, 你并不知道什么地方会出现'\0'这个结束符。 2) 对。 3) 如果你说的x86条件是指int长度为2字节,则输出为 3839(十六进制) 这是个共...===========================================问:这是一个 统计正文中 字符数 单词数 输入行行数的程序。出错了,运行时...答:scanf("%s",a) -----& scanf("%s", &a);===========================================问:#include&stdio.h& char* myStrcat(char *s,char *t){ char *p = whi...答:数组s太小了,压根就容不下字符串k呀。 可以这样: char s[]100 = "asdsa";===========================================下面的安装教程,以C语言中文网提供的VC6.0安装包为例,请到这里下载:
截止到日,C语言中文网提供的VC6.0安装包,下载量已超过100万次,收到反馈超过200条。我们对大家的反馈进行了汇总,发现大部分问题发生在安装阶段。VC6.0的安装步骤比较繁琐,一些入门的学生可能无法驾驭,现在我们将安装步骤以及注意事项总结出来,给大家提供指导。
注意:不要相信网上所说的什么破解版、绿色版、简装版,号称可以完美支持win7。VC6.0对win7的支持,必须要在安装时正确设置,安装完成后还要打补丁。
以下教程将教给您如何在win7下正确安装VC6.0。安装完成后,还需要打补丁,在文章最后给出。
注意,安装过程和使用过程会出现如下&程序兼容助手&提示,一定要勾选&不再显示此消息&,然后单击&运行程序&。
以后运行过程如果出现这个提示,还是这样选择,不会影响使用的。
1) 解压下载的压缩文件,进入文件夹,双击 SETUP.EXE 进行安装。如下图所示:
2) 点击&下一步&继续安装,遇到填写&产品号和用户ID&,忽略或者保持默认,不用理会,继续&下一步&。如下图所示:
3) 接下来是安装选项,选择&安装Visual C++ 6.0中文企业版&。如下图所示:
4) 下面是安装方式,一定要选择Custom(自定义安装),这是解决win7兼容性问题的关键。如下图所示:
5) 弹出组件选择对话框,选中&Tools&,点击&更改选项&。
6) 把&OLE/COM Object Viewer&选项去掉,点击&确定&。OLE/COM Object Viewer是对象查看器,它与win7不兼容,去掉后不影响任何编程操作。
7) 接下来问你要不要注册环境变量,选择是,以后会用到这里的环境变量。
8) 遇到下面的提示,选择&是&。
9) 遇到下面的提示,选择&是&。
8) 接下来,会提示安装MSDN。MSDN是微软提供的帮助文档,我们提供安装包没有带,选择&退出&,不要安装。
9) 点击&是&,完成安装。
再强调一遍,VC6.0对win7的支持,必须要在安装时正确设置,安装完成后还要打补丁。
如何设置已经在上面的安装教程中给出答案,下面是安装完成后常见问题的解决方案(即打补丁):
推荐文章 TOP10}

我要回帖

更多关于 c语言猴子吃桃问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信