日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言经典例79-字符串排序

發布時間:2025/6/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言经典例79-字符串排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 題目
  • 2 分析
  • 3 實現
  • 4 運行結果

1 題目

字符串排序,輸出三個字符串(長度小于20),并將其按照ASCII碼順序排序。

2 分析

首先限制三個字符串的輸入,本例利用fgets函數,該函數的原型為:

char *fgets(char *str, int n, FILE *stream)
  • str : 這是指向一個字符數組的指針,該數組存儲了要讀取的字符串。
  • n : 這是要讀取的最大字符數(包括最后的空字符)。通常是使用以 str 傳遞的數組長度。
  • stream : 這是指向 FILE 對象的指針,該 FILE 對象標識了要從中讀取字符的流。

其中字符串的長度可以通過sizeof技巧來計算即數組總大小/單個項大小,就是總長度sizeof str1 / sizeof str1[0],stream則為標準輸入流stdin

由于本例中只有三個字符串,很容易想到之前做過的三個數的大小比較, 是通過三個if語句判斷的,在本例中如何判斷字符串大小呢?實際上C語言string.h頭文件中包含了字符串比較函數strcmp,它的函數原型如下:

int strcmp(const char *str1, const char *str2)

其中str1和str2是要比較的兩個字符串,它的返回值如下:

  • 如果返回值小于 0,則表示 str1 小于 str2。
  • 如果返回值大于 0,則表示 str2 大于 str1。
  • 如果返回值 = 0,則表示 str1 等于 str2。

該函數的實現原理是通過比較ASCII碼值來實現的。
在比較兩個字符串大小后,則要交換兩字符串,這里可以使用strcpy字符串復制函數來實現,它的原型如下:

char *strcpy(char *dest, const char *src)

功能就是將src中的內容復制到dest中。

3 實現

#include <stdio.h> #include <stdlib.h> #include <string.h>void swap(char*str1, char*str2);int main() {char str1[20], str2[20], str3[20];printf("請輸入3個字符串,每個字符串以回車結束:\n");fgets(str1, (sizeof str1 / sizeof str1[0]), stdin);fgets(str2, (sizeof str2 / sizeof str2[0]), stdin);fgets(str3, (sizeof str3 / sizeof str3[0]), stdin);if (strcmp(str1, str2) > 0) {swap(str1,str2); // 比較str1和str2}if (strcmp(str2, str3) > 0) {swap(str2,str3); // 比較str2和str3}if (strcmp(str1, str2) > 0) {swap(str1,str2); // 比較str1和str2}printf("排序后的結果為:\n");printf("%s%s%s", str1, str2, str3);return 0; }void swap(char *s1, char *s2) {char t[20];strcpy(t, s1);strcpy(s1, s2);strcpy(s2, t); }

4 運行結果

請輸入3個字符串,每個字符串以回車結束: def abc bed 排序后的結果為: abc bed def

總結

以上是生活随笔為你收集整理的C语言经典例79-字符串排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。