⑴ 程序正确为什么运行结果错误
行结果错误
⑵ 下面是一段C语言的代码,逻辑,代码没问题,为什么运行的结果却不正确
这个代码是存在问题的。
char
*p;
这个只定义了一个指针,并且没有进行初始化,此时不知道p指向内存中的何处,可能是任何地方!!
scanf("%c",
&p)
这样的话,指针p的值就被修改成了你输入的字符的值了。
for(;*p!='\0';)
这句话,进行
*p
操作的话,那么就会将指针p的值作为地址,取出该地址处的一个字节,
然后与
'\0'
进行比较
后面的程序就与前面的一样了。
这样的程序或许可能运行的起来,但是,你输入的字符的值最大是不会超过255的,
也就是说你
*p
的值就是你内存中存储在
0x00
~
0xff
之间的某个值,这个是不确定的。
你要想输入字符串的话,必须首先分配内存空间才行!!!
char
str[256]
=
{
0
};
scanf("%s",
&str[0]);
然后再判断str的长度
或者
char
*p
=
(char*)
malloc(256);
//
分配
scanf("%s",
p);
free(p);
//
释放
⑶ proteus程序正确结果不正确
编译不正确。proteus程序正确结果不正确是编译错误导致的。Proteus是英国着名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
⑷ 为什么我写的C语言程序编译时没错,运行时有错误
楼主,你好!编译没有错误只能说明没有语法错误,并不能说明代码的逻辑没有错!因为编辑器主要是根据c语言的语法来检查你的代码有没有错!
⑸ 用C语言编程程序没有错误为什么结果不对
程序可以运行并不表示程序就是正确的
编译和连接都正确,只能说明编译器对他进行语法等检查
没发现他的错误而已,而既然运行结果是错误的,那就是说明一点
可能是你的算法设计的不当,不能正确的解决问题,这样发生的错误
是运行期错误,在编译连接的过程不会出错的,不过幸好,编译器也为我们
提供了一些解决类似运行期错误的一些调试工具,通过debug,进行单步调
试下,观察变量值,看看是不是你想要的等等解决此类问题,具体如何单步
调试见下面:
不过你先要设置断点,然后按下面操作
在VC++6.0中的单步调试:
调试重要的几个键:
F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.
F5调试状态运行程序,程序执行到有断点的地方会停下来.
F10单步执行程序.
CTRL+F10运行到光标所在行.
F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.
SHIFT+F11跳出当前所在函数.
步骤:
1,保存为c或c++文件
2,根据断点调试找到错误处。
3,采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数盗用,f11是进入函数体调试。一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。
4,在调试过程中,肯定得监视程序中的变量。在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。具体怎样设置自己体会吧。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值
5,vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。右键——〉在debug(或调试)选择项的勾勾上。ok