首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 指針數組排序:if 語句多餘分號導致無條件交換

     編輯:程式設計疑難解答

錯誤代碼

if (strcmp(pr[i], pr[j]) > 0);  // 這裡多了一個分號!
{
    temp = pr[j];
    pr[j] = pr[i];
    pr[i] = temp;
}

後果

分號導致 if 體為空語句,大括號變為獨立代碼塊無條件執行,每次循環都交換,結果亂序。

修正

if (strcmp(pr[i], pr[j]) > 0) {  // 去掉分號
    temp = pr[j];
    pr[j] = pr[i];
    pr[i] = temp;
}

對比

第二種冒泡寫法 if (strcmp(pr[j], pr[j+1]) > 0) 無分號,邏輯正確。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved