Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

曼裙 發問時間: 電腦與網際網路程式設計 · 1 0 年前

C的else-if是做啥的?用法?

看C的章節中發現else-if

可是我看的是英文版

所以看不太懂

請幫我解釋一下好嗎?!

已更新項目:

給你一個例題

希望你看得懂

可以解釋給我聽

int binsearch(int x, int v[], int n)

{

int low=0, high=n-1, mid;

while (low<=high) {

mid = (low high) / 2;

if (x < v[mid])

high = mid-1;

else if (x > v[mid])

low = mid 1;

else

return mid;

}

return-1;

}

2 個已更新項目:

to Grade

我看過你的解釋

也自己代數字進去算

可是我還是不懂這個程式要算出的是什麼東東

是"找x是不是中位數?"

還是?!

if (x < v[mid]) //x小於v[mid]時

high = mid-1; //高位元為中位元減一

else if (x > v[mid]) //否則如果x大於v[mid]

low = mid 1; //低位元為中位元加一

這一段我知道它是這意思

可是我不知道它為啥要這樣

return mid; //表示找到了,傳回mid

而後又有

return-1; //如果都沒找到,傳回-1

是表示最後答案是-1?!

3 個已更新項目:

對不起~

問題很多=3=

就拜託你囉~

2 個解答

評分
  • 1 0 年前
    最佳解答

    else if 其實在C裡面是兩個指令,不過常常會為了美觀或節省空間寫成一行。

    如下:

    if (條件)

    { 執行內容A; }

    else

    { 執行內容B; }

    如果條件符合﹝為真(true)﹞,則做執行內容A,否則做執行內容B

    可是在 if 條件不符時,想在例外再繼續做檢查,就再加上 if

    if (條件A)

    { 執行內容A; }

    else

    if (條件B)

    { 執行內容B; }

    else

    { 執行內容C; }

    符合條件A做執行內容A,不然如果符合條件B就執行內容B,再不然就執行內容C。

    上面也可以寫成 else if (條件B) {執行內容B;} 這樣一行,程式照樣執行,看個人習慣。

    解釋下面的程式碼:

    //宣告int形態的函數(功能為二元搜尋),可傳入3參數

    //x是要搜尋的值, v[]是被搜尋的陣列, n是陣列長度

    int binsearch(int x, int v[], int n)

    {

    int low=0, high=n-1, mid; //低位元為0, 高位元為傳入的陣列大小-1

    while (low<=high) { //高位元比低位元大的時候則重複

    mid = (low+high) / 2; //計算中間位置

    if (x < v[mid]) //x小於v[mid]時

    high = mid-1; //高位元為中位元減一

    else if (x > v[mid]) //否則如果x大於v[mid]

    low = mid+1; //低位元為中位元加一

    else //如果x都不在以上範圍

    return mid; //表示找到了,傳回mid

    }

    return-1; //如果都沒找到,傳回-1

    }

    如果是初學者,建議畫個陣列試試看這個函數如何運作,會更快弄懂

  • 1 0 年前

    單純的if 如果條件為真(成立)會執行後面的工作

    如果不成立就跳過往下執行

    但後面若有接著else,則else這一行只有在if的條件為假(不成立的時候)才會執行,這便是 if-esle

    這是兩個中文句

    1.如果今天天氣很好就去逛街

    2.如果今天天氣很好就去逛街,不然(else)就呆在家

    當天氣不好的時候,1.不一定會呆在家,但2.一定是呆在家

    如果你問的是else-if,他應該都是附加在 if else之後做為連用

    請看下方的例子:

    char keyin;

    if(keyin=='y') printf("Yes");

    else if(keyin=='n') printf("No");

    else printf("I don't know");

    營幕的畫面會是如此顯示:

    1.當輸入 "y"時營幕會顯示"Yes"

    2.當輸入 "n"時營幕會顯示"No"

    3.當輸入其他的營幕會顯示"I don't know"

    當你有很多的判斷要執行的時候又不想/不適合用 and (&&)或 or(||)時

    你可以使用看看 else if的連用

    2007-02-08 15:35:54 補充:

    return -1雖然看起來是把值變成負一

    但在寫程式習慣是將-1當做是"失敗"、"錯誤"的意思

    像我習慣遇到這個情形時會要求使用者再輸入一次變數

    ps.就算不可能會跑到return -1這一行 我還是習慣會加上去

還有問題?馬上發問,尋求解答。