我買了一個小程序,我做的一個問題,我希望它能夠得到的美元匯率,改變成不同的貨幣,它是工作,但打印了很多莫名其妙的話它的工作原理後... 看看我得到的結果的屏幕截圖: 我的C代碼有什麼問題?循環中的東西?
回答
變化
while ((quintity[Index]) != '\0') {
Index++;
到
for (Index = 1; Index < inputIndex; Index++) {
,然後再試一次。打印數據時
不知道_why_這是downvoted,leeduhem,但我認爲這可能與索引增加時有關。我原本以爲增加循環體中的第一件事是OP的錯誤,但後來我注意到了「門$」的東西,所以我假設第一項是轉換因子。因此,您的for循環在技術上不等同於OPs while循環。應該相對容易解決這個問題。 – paxdiablo
@paxdiablo你說得對,回答固定。謝謝。 –
這個答案是好的,它似乎我們有人自動downvoting每個答案.. –
你的循環狀態:
while (quintity[Index] != '\0') {
掩蓋一個事實,即你的輸入迴路從來沒有真正陣列中放置零從用戶得到的值時。 這就是爲什麼循環在數據的(明顯)結束之後繼續進行。
您可以輸入迴路後,立即通過這樣做解決這個問題,:
while (scanf ("%f", &input) != '\0') {
quintity[inputIndex] = input;
inputIndex++;
}
quintity[inputIndex] = 0; // add this
不過請注意,這意味着你不能指望明智的輸出,如果你真的進入零作爲輸入值。
這是使用端部線圈檢測的定點方法。即使您輸入零,長度方法也會起作用。我的意思是,在打印數據時使用inputIndex
爲Index
極限值:
while (Index < inputIndex) {
總之,我相信下面的代碼將是一個更好的解決方案,因爲:
scanf
返回轉換所以你應該繼續,而這是一個,而不是項目的數量,同時它不是零(有可能爲scanf
實際回報某些錯誤-1
,而你沒有真的想繼續)。- 你應該在打印循環使用
inputIndex
作爲限制器index
。這將比基於哨兵的支票更好,因爲它將允許輸入零金額。 - 你真的應該不會嘗試存儲的值,如果你的
inputIndex
達到MAX
。這使您的代碼適合緩衝區溢出。
考慮所有的考慮,我將其轉換爲類似:
while ((inputIndex < MAX) && (scanf ("%f", &input) == 1))
quintity[inputIndex++] = input;
for (Index = 1; Index < inputIndex; Index++) {
HamaraGate = quintity[0] * quintity[Index];
:
sumDollar += HamaraGate;
}
- 1. 我的循環鏈表的代碼有什麼問題?
- 2. 我的循環和array_rand()的代碼有什麼問題?
- 3. 我的C++代碼有什麼問題?
- 4. 我的C#代碼有什麼問題?
- 5. 我的代碼有什麼問題? C++
- 6. 我的代碼有什麼問題? C
- 7. 我的C代碼有什麼問題?
- 8. 我的C#代碼有什麼問題?
- 9. 我的C代碼有什麼問題?
- 10. 我的c代碼有什麼問題?
- 11. 我的while循環有什麼問題?
- 12. 我的循環有什麼問題?
- 13. 我的循環有什麼問題?
- 14. C++:while循環有什麼問題?
- 15. 用於模擬循環的彙編代碼有什麼問題?
- 16. 我的循環保持循環也循環錯誤的東西?
- 17. 爲什麼它循環,曾多次......我思念的東西
- 18. 我的代碼有什麼問題?
- 19. 我的mouseup代碼有什麼問題?
- 20. 我的onStart代碼有什麼問題?
- 21. 我的X11代碼有什麼問題?
- 22. 我的php代碼有什麼問題?
- 23. 我的PHP代碼有什麼問題?
- 24. 我的代碼有什麼問題?
- 25. 我的代碼有什麼問題?
- 26. 我的arduino代碼有什麼問題?
- 27. 我的代碼有什麼問題?
- 28. 我的AJAX代碼有什麼問題
- 29. 我的SceneJS代碼有什麼問題?
- 30. 我的代碼有什麼問題? 9
你不介意在這裏張貼的代碼 – KRUKUSA
打印的值都是垃圾值......我建議你試試使用另一種方法檢查數組的末尾......我不認爲這是一個很好的做法,像你在代碼中一樣檢查浮動數組的結束。 – nravichan
請將代碼和代碼塊輸出,而不是鏈接到屏幕截圖。 –