c語言怎麼不用strcmp按字典順序對多個字串排序

2022-06-10 04:26:30 字數 3341 閱讀 7202

1樓:匿名使用者

自己做strcmp和strcpy子函式,或者把能實現相同功能的子函式模組用for迴圈來處理

strcmp子函式的功能是比較str1和str1字串的每個字元

用乙個for迴圈來實現這個功能的

功能實現,模擬著函式

void mystrcmp(char *str1,char *str2)

strcpy拷貝子函式也是用乙個for迴圈來實現的

void mystrcpy(char *str1,char *str2)

你完全可以把這個功能模組用著相應的位置

for(i=0;istr[j][k]) //也可以用指標,大了就交換,小了或等於不交換

交換**

}l=min(strlen(str[i]),strlen(str[j]));

這一句完全可以用l=strlen(str[i])>strlen(str[j])?strlen(str[i]):strlen(str[j]);

不用子函式,或者乙個if--else來解決

temp=str[j];

str[j]=str[i];

str[i]=temp;

這是交換的**,字串不能這麼交換,可以用strcpy拷貝函式,或者字元乙個乙個的交換

不能整個字串用=來賦值

2樓:上帝來自地球

這樣修改就沒問題了,不明白可以追問!

#include

#include

int min(int a,int b)

int main()

;int i,j,k=0,l,n;

char *temp;

scanf("%d",&n);

for(i=0;i*(str[j+1]+k))} }}

}for(i=0;i

printf("%s\n",str[i]);

return 0;}

c語言中如何通過函式按字典順序排列輸入的十個字串

3樓:袁世平

如果使用的是氣泡排序,那麼和整數排序唯一的不同就是這個部分:

if(a[j]>a[j+1])

swap(a[j],a[j+1]);

那麼在字串排序的時候,需要用到乙個庫函式叫strcmp(char a,char b);

這個函式在庫中[或者c語言中在庫中]

這個函式的用法就是輸入字串a,b,判斷a,b的字典序大小.

若a的字典序小返回負值

若a的字典序和b相同返回0

若a的字典序大於b的字典序返回正數

然後你將上面冒泡的部分改一下的話就是:

if(strcmp(a[j],a[j+1])>0)swap(a[j],a[j+1]);

這樣的話就可以實現氣泡排序了.

如果你使用的是系統快排的話,你可以用string,也可以定義乙個結構體

struct nodes[12];

int main()

這樣的話也是可以實現的.

4樓:匿名使用者

不是字典序吧……是ascii碼的大小,大小寫會有問題

c語言中如何將10個字串進行排序

5樓:問明

#include

#include

int main()

int j,k,i,t,n;

char s[10][10],b[10][10];

for(i=0;i<10;i++)

scanf("%s",s[i]);

n=strlen(s[1]);

k=0;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(strcmp(s[j],s[j+1])>0)for(k=0;kb[j][k]=s[j][k];

for(k=0;ks[j][k]=s[j+1][k];

for(k=0;ks[j+1][k]=b[j][k];

for(i=0;i<10;i++)

printf("%s ",s[i]);

return 0;

執行效果:

6樓:亥夏侯戎

c語言中如何將十個字串進行排序?這十個。這十個字元分別是愛與畢西諦艾艾夫記。

7樓:風若遠去何人留

一、演算法設計:

1、輸入10個字串;

2、任選一種排序演算法對字串排序,比較時需要使用strcmp, 複製時需要使用strcpy。

3、輸出排序後的結果。

二、演算法優化:

字串比較必須使用strcmp,這一點無法優化。 但每次將字串整體複製,交換值,效率偏低,所以可以使用字元指標陣列儲存每個字串的位址,排序時交換指標即可。

另外,輸入時可以同步完成排序操作。

#include

#include

int main()

//迴圈結束後,p中就是排序好的10個字串。

for(i = 0; i < 10; i ++)//輸出結果。

return 0;}

8樓:mrs_小可愛

不好意思,你說的這個我不是很了解呢,沒能幫到你,希望您可以得到滿意的答覆,祝您生活愉快,謝謝!

c語言程式題 從鍵盤接收5個字串,然後按字典順序排序後輸出 程式如下,幫幫改下吧

9樓:聽不清啊

已經修改完成:

#include

#include

main()

{ char * str[5], strl[5][80]; //定義字元指標陣列,用於指向多個字串

char *temp;

int i, j;

for (i = 0; i < 5; i++){ gets(strl[i]); //從鍵盤上接收多個字串str[i] = strl[i]; //讓指標陣列中的字串指標指向輸入的串

for (i = 0; i < 4; i++)for (j = i + 1; j < 5; j++){ if (strcmp(str[i], str[j]) > 0){ temp = str[i];

str[i] = str[j];

str[j] = temp;

for (i = 0; i < 5; i++)printf("\n%s\n", str[i]);

c語言: 輸入10個字串,用選擇排序法對十個字串按大到小排序並輸出

c語言關係運算中負數是按0還是按

1 關係運算子中是判斷邏輯,而不是正負 2 邏輯只有真假,是0即假,非0即真 3 按你所說負數當然是真咯!如果滿意,請採納!關係運算中之區分零和非零,負數是非零 非零即為真,所以負數也是真,為1 0001 取反1110 符號位為1,取反 1為 1010 轉化成10進製為 2正數的原碼,補碼,反碼都版...

吉他c和弦怎麼按結他C和弦怎麼按

吉他c和弦總共有兩種按法,分為簡化按法和不簡化按法 1 簡化指法 用食指按住吉他的第2弦的第1品,然後用中指按第4弦的第2品,無名指按第5弦的第3品,三個手指按緊,不要碰到一品 三品 還有六品琴弦,此指法應用較廣,示意圖如下所示 2 不簡化指法 食指按結他的第2弦的第1品,然後中指按第4弦的第2品,...

c語言中18怎麼算?是按位異或運算子

1和8都是int型,且都是正整數,記憶體中原碼形式儲存 1的原碼是00000000 00000000 00000000 0000001 8的原碼是00000000 00000000 00000000 0001000 按位異或,顧名思義是對應的二進位制位計算,口訣相同0,相異為1.就是對應的二進位制位...