萌新練代碼又遇到問題了大佬們看一眼感謝感謝

1,圖片里
for(i=0;i<=8;i++)
for(j=i+1;j<=9;j++)
這個運行程序是怎樣的有點不懂
我在思考,i是=0直接進入第二個for,j=1,再運行j+1等于2呢。還是第一個運行i+1,i=1進入第二個for,j=2,然后運行j+1=3,之后再怎樣運行還是我思考的都不對,有會的大佬如果可以打字麻煩,寫紙上拍下行嗎,萬分感謝。
2,這樣子的做兩個陣列進行比較,怎樣想到這一步要特別是第二個大的for,套了兩個for,有點想不到這樣的步驟。
uj5u.com熱心網友回復:
內層回圈進行完再進行外層回圈這種問題建議你自己拿張紙來寫,實在搞不懂就單步除錯,這樣幾個例子之后你就能搞明白了,單是看看用處不大
uj5u.com熱心網友回復:
i=0 -> (j=i+1=1->j++ until j<=9) -> i+1=1 -> (j=i+1=2->j++ until j<=9) -> i++ until i<=9這個是嵌套回圈,括號里面是第二個回圈
uj5u.com熱心網友回復:
在if比較前,自己加上printf陳述句把i和j輸出出來,看看誰和誰在比較for(i....)
for (j....){
printf("compare a[%d] and a[%d]\n", i, j);
if ( a[i]>a[j]) .......
}
這樣就能看到執行流程了
不會用IDE除錯,就先來最簡單的直接列印輸出
uj5u.com熱心網友回復:
感謝大佬,步驟我已經看懂了,就是這樣子的我怎么能想到呢,我感覺看到題我只能想到一般的單回圈,像這樣子嵌套第一次看到,課里還沒有聽明白,看了你的步驟我才懂了,就像一樓說的有沒有練習或者自己用除錯思考弄明白,不然我也只是知道這個步驟的程序下次看到能知道這個步驟。
uj5u.com熱心網友回復:
最好上手實操uj5u.com熱心網友回復:
在if比較前,自己加上printf陳述句把i和j輸出出來,看看誰和誰在比較
for(i....)
for (j....){
printf("compare a[%d] and a[%d]\n", i, j);
if ( a[i]>a[j]) .......
}
這樣就能看到執行流程了
不會用IDE除錯,就先來最簡單的直接列印輸出
很不好意思,大佬。那個加的那句printf(...)沒看懂。你說的除錯是不是在自己寫的那一行開頭的小按鈕按一下這一行變成紅色,然后運行,運行程序只會運行到這紅色的前一行呢?然后滑鼠點某些變數會出現數值。我電腦上那個軟體是c++的,但是除錯程序中一除錯就卡主了然后自己退出我挺懵的。那個直接列印輸出又是什么。。就是你寫的插入的這行printf嗎,我看著有點像那個,之前看過一下東西,好像就是運行前加入這些,然后運行程序這些值都會顯示出來不知道是不是這個意思
uj5u.com熱心網友回復:
你不是不理解代碼是怎么運行的嗎,那就把代碼運行程序當中的各個變數情況輸出出來那個示例代碼的意思,就是要輸出
比較a[0],a[1] []里面就是當前的i和j
比較a[0],a[2]
比較a[0],a[3]
除錯就是直接在除錯工具下看這些變數, 這里無非是把這些變數列印出來更直觀的看
如果愿意,你還可以在if陳述句里面繼續寫
if ( a[i] > a[j] ) {
printf("\t交換%d和%d的資料\n", i, j);
t = a[i];
a[i]=a[j];
a[j]=t;
}
這樣看輸出結果,就更清楚了,可能是
comapre a[0], a[1]
交換0,1
compare a[0], a[2]
。。。。。
uj5u.com熱心網友回復:
就是告訴你,不明白程式怎么執行的時候,要通過輸出這些參與運算的變數的值, 然后根據這些輸出結果來看看他們如何執行的uj5u.com熱心網友回復:
就是告訴你,不明白程式怎么執行的時候,要通過輸出這些參與運算的變數的值, 然后根據這些輸出結果來看看他們如何執行的
十分感謝,我明白了,謝謝大佬直觀的講解,我能明白你的意思了。以后自己可以多練習練習這個對自己提高肯定很大,之前就比較迷,看不懂就看不懂了,現在我可以自己去研究了哈哈
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156977.html
標籤:C語言
上一篇:新手求指點
下一篇:C語言初學者求助!!!
