當前位置:成語大全網 - 書法字典 - 字符串字典順序比較

字符串字典順序比較

對不起,我不小心了!哈哈!

下面是壹個例子:刪除else後問題出在哪裏,為什麽結果是錯誤的。仍然是A【0】=“12345“,A【1】=“12452“;

前兩個相等,所以如果沒有完成。a【1】的第三個和第四個值很大,循環應該在此處結束,因此不再進行比較,但由於刪除了else語句,循環仍會執行。但因為條件不成立,而只能j++;+;當到達第五位數時,由於a【0】為5,a【1】為2,因此滿足if的條件,因此a【0】和a【1】互換,但這顯然是錯誤的。因為a【1】的前四個項目的數字大於a【0】,所以現在應該結束循環而不比較第五個數字。

我大意了,呵呵,差點誤導妳!真的很抱歉。現在解釋可以了嗎?我仔細分析過了,應該沒有問題。

附:

改進建議:如果您知道strcpy()函數,為什麽使用第三個for來循環逐字符比較呢?您可以使用strcmp()進行直接比較,從而消除第三個for語句。

改進後的代碼如下,供參考:

#包含“stdio.h“

#包含“string.h“

void main(){

char b【20】,a【5】【20】;

int i,j;

printf(“input:\ n“);

for(I = 0;我& lt5;i++)

get(a【I】);

for(I = 0;我& lt5;i++){

for(j = I+1;j & lt5;j++ ){

if(strcmp(a【I】,a【j】)& gt;0){

strcpy(b,a【j】);

strcpy(a【j】,a【I】);

strcpy(a【I】,b);

}

}

}

printf(“\ n \ n排序結果為:\ n \ n“);

for(I = 0;我& lt5;i++)

puts(a【I】);

}

這樣更清楚嗎?它和壹般的整數數組幾乎是壹樣的排序,不是嗎?哈哈!

strcmp的具體說明:

int strcmp(const char * string 1,const dhar * string 2);

按照字典順序比較字符串string1和string2。如果string1在string2之前,則返回值小於0;如果string1和string2相等,則返回值為0;如果string2之後是string1,則返回值大於0;