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) 無分號,邏輯正確。