‘壹’ C语言程序逻辑错误
从代码本身以及运行的情况来看,可执行程序的内容,与所贴的代码不相符(可能是修改了代码后没有重新编译,就运行了修改前的代码,不然也不会代码现在有错误就能编译通过的,例如第2行的末尾多了“op”,“现有1人捐款”也没有输出),修改建议如图:
‘贰’ c语言迷宫问题 编译运行后只显示地图,可能逻辑有问题求教
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
intmap[9][12]={
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,2,0,1,0,0,0,1,1,0,0,0},
{1,0,0,0,1,0,0,1,0,0,1,1},
{1,0,0,1,1,0,1,0,0,1,0,1},
{1,0,0,0,1,0,0,0,1,1,0,1},
{1,1,0,0,1,1,1,0,0,0,0,1},
{1,0,0,1,0,1,0,0,1,1,0,1},
{1,1,0,0,0,0,0,1,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1}};
voidprt()
{
system("cls");
introw,col;
for(row=0;row<9;row++)
{
for(col=0;col<12;col++)
{
if(map[row][col]==1)
{
printf("■");
}
elseif(map[row][col]==0)
{
printf("");
}
elseif(map[row][col]==2)
{
printf("☆");
}
}
printf("
");
}
}
intmain()
{
prt();
intman_row=1,man_col=1;
charch;
while(1)
{
fflush(stdin);
ch=getch();
switch(ch)
{
case'w':
case'W':
if(man_row>=1&&map[man_row-1][man_col]==0)
{
map[man_row][man_col]=0;
man_row--;
map[man_row][man_col]=2;
prt();
}
break;
case'a':
case'A':
if(man_col>=1&&map[man_row][man_col-1]==0)
{
map[man_row][man_col]=0;
man_col--;
map[man_row][man_col]=2;
prt();
}
break;
case's':
case'S':
if(man_row<=7&&map[man_row+1][man_col]==0)
{
map[man_row][man_col]=0;
man_row++;
map[man_row][man_col]=2;
prt();
}
break;
case'd':
case'D':
if(man_col<=10&&map[man_row][man_col+1]==0)
{
map[man_row][man_col]=0;
man_col++;
map[man_row][man_col]=2;
prt();
}
break;
}
if(man_row==1&&man_col==11)
{
printf("
YouWin!");
break;
}
}
return0;
}
‘叁’ 请问大神这段c语言代码逻辑有问题吗
逻辑有问题,大括号套错了。第14行的大括号}移到16行之后,17行之前。14行的这个大括号}与11行的大括号{对应,放错位置了,应该在16行的大括号}之后,17行的大括号}之前。
‘肆’ 我在编写C语言代码的时候,有时候代码会有一些逻辑上的错误,就是代码可以运行,但得不到正确的结果.
新手最郁闷的事情莫过于程序可以运行但是却得不到自己的结果了吧。
老手最郁闷的事情莫过于新手问为什么我的程序可以运行但是却得不到自己的结果了吧。
比如:
你天天用操作系统。
如果你用过Windows98就应该知道那时候系统经常崩溃的。
但是微软设计的时候,不会把它故意设计成每小时或者没几天崩溃几次吧。
不崩溃的时候,程序不也是正常运行么。
为什么得不到自己想要的结果:
那是因为你的程序根本就没有写对
比如:
老师让你输出:1
你写个程序输出:2
你的代码当然编译不会出错。
而且可以很好的运行,但是结果就是2.
永远都不会是1,因为你就让他输出的2,结果怎么会是1呢。
开发人员都知道:
再也没有比修改语法错误再简单的了
直接看看编译器报的错,看看第几行,修改。OK。。太简单了
逻辑错误就得调试了
这个世界上只有调试不开发的。没有开发不调试的。
不会debug。永远都不是程序员。
你不可能一下子就得到自己想要的结果。
尤其是比较大的程序。
gdb..学习它,使用它,爱上它。
(gdb *nix平台的。如果,而且我猜你用的是Windows,Windows用vs不错)
‘伍’ c语言helloworld代码是对的,但编译错误
写c语言的时候,如果代码没错,这只能说明语法没有出错,直接导致的结果就是能编译通过,并不意味着执行的结果就是正确的。影响c语言代码执行结果的因素非常多。
一、指针的不正确运用;
二、变量精度问题。char,int,unsigned int,long ,float等,如果变量精度使用不正确,也会影响运算结果;
三、运算符的应用不正确。例如除,取余的区别;
四、正负符号位;
五、运算符的优先级使用;
六、编译器不同。各种编译器也可能造成结果不一致;
C语言虽然是一门比较简单的语言,但是要掌握这些细节,其实并不容易。
‘陆’ c语言无法编译是什么情况
编译出来只说明程序没有语法错误,不说明没有逻辑错误,有错误一般会有屏幕输出,此其一。第二,可以在程序中设定一些输出语句或断点观察。第三如果程序不输入、输出内容,程序执行是当然看不见东西(不直观)。第三如果程序一值运行无法退出,说明存在“死循环”。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
‘柒’ 对于C语言编程出了错,怎么能快速找出错误呢
最直接的方法就是编译,编译后再按F4可以显示错误信息及错误位置。
如果编译通过,却运行结果异常或不理想,往往是逻辑问题,请按顺序检查,如i++写成i--,i++写成j++,++i写成i++,<=写成<,有的变量一次循环后需要重新赋值清零,在循环末尾一定要写上重新赋值语句。
‘捌’ C语言编程逻辑错误。。求教!
你在minfabs函数中重新定义了a[N],而这个a[N]跟
main函数那个a[N]是两个不同的数组,你应该把main函数的a[N]作为参数传到minfabs,
即定义为void
minfabs(float
a[]),然后main中调用minfabs(a)
‘玖’ 用c语言编程,编译后有错误却不显示
这个状态表示:你的程序没有错误,而是系统安装不完整,或者其他问题导致编译的最后一个阶段(连接)无法进行,这个阶段执行的命令的cl.exe,执行这个程序报错了。