CAS(Compare And Swap) 演算法
阿新 • • 發佈:2020-08-02
用指標陣列處理上一題目,字串不等長
解題思路: 與數字的比較沒什麼區別,只不過需要採用strcmp進行字串的大小比較,使用指標實現需要在最早接收資料的時候就採用字串指標陣列,這樣的好處在於指標的指向可以直接通過賦值進行改變,而指標陣列中的字串的順序只需要交換不同字串的地址就可以實現
答案:
#include<stdio.h> #include<string.h> void sort(char *s[10]) { int i, j; for (i = 0; i < 10; i++){ for (j = i; j < 10; j++){ if (strcmp(s[i], s[j])> 0){ char *tmp = s[i]; //指標的好處在於直接通過賦值可以改變指向 s[i] = s[j]; //只要交換了字串的地址就實現了字串的交換 s[j] = tmp;//因此通過指標指向的交換就能夠實現陣列中字串的排序 } } } } int main() { char *str[10]; printf("Please enter ten strings:\n"); for (int i = 0; i < 10; i++) { str[i] = malloc(32);//為每一個指標分配空間 scanf_s("%s", str[i], 32); } sort(str); printf("\n"); for (int i = 0; i < 10; i++){ printf("%s\n", str[i]); free(str[i]); } system("pause"); return 0; }