⑴ 程序正確為什麼運行結果錯誤
行結果錯誤
⑵ 下面是一段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