tft每日頭條

 > 科技

 > c語言冒泡排序法例子

c語言冒泡排序法例子

科技 更新时间:2024-10-07 19:23:47

我們都很清楚冒泡排序,光冒泡排序我已經講了好幾節,就是給定一組數據,這組數據兩兩比較大小,然後交換位置,最終将結果按從小到大排序。

那麼今天這道題目呢,正如标題所說:将冒泡排序用于字符串,給定任意的整數K和N,打印輸出掃描第K遍後的中間結果數列,K要滿足大于等于1,小于N,N要滿足小于等于100,此後N行,每行包含一個長度不超過10的、僅由小寫英文字母組成的非空字符串。

c語言冒泡排序法例子(用C語言實現字符串的冒泡排序)1

梳理邏輯

1、輸入整數N和K,用到一個scanf函數。

2、因為要用于字符串序列,而且是不停地輸入字符串,所以我們可以使用二維數組來存儲字符串,為什麼使用二維數組呢,因為二維數組有多行,這裡正好要輸入N個字符串,所以二維數組也能存儲多個字符串,而且它要求每行包含一個長度不超過10的,且僅由小寫字母組成的非空字符串。

至于長度不超過10,隻需要用一個二維數組滿足列為11即可,這樣就能保證長度不超過10,而僅由小寫字母組成的話,需要用到一個#include<ctype.h>庫當中的islower函數,當islower函數等于零的時候,就說明該字符串中有大寫字母,要重新輸入。

for(int i=0; i < N;i ){ if(islower(bubble[i]==0)){//如果字符串中有大寫字母,就重新輸入 scanf("%s",bubble[i]); } }

3、最關鍵的就是比較字符串大小,比較字符串大小該如何來理解呢,我在做這道題目的時候,我一開始理解錯了,以為比較字符串大小是比較字符串的長度多少,結果在驗證之後發現,得不到題目期望的結果,于是我開始考慮。

之後發現,C語言中有一個strcmp函數,是專門用來比較字符串大小的,如果第一個字符串和第二個字符串大小相同,則返回零,如果第一個字符串比第二個字符串小,則返回小于零,如果第一個字符串比第二個字符串大,則返回大于零。

c語言冒泡排序法例子(用C語言實現字符串的冒泡排序)2

4、除了用到strcmp函數外,我們還要用到另一個函數來交換兩個字符串之間的位置,當然,這裡與數字的冒泡排序相同,自然是要定義一個臨時變量來存儲字符串的,用到的複制函數則是strcpy,能夠把第二個字符串的内容給複制到第一個字符串當中,然後覆蓋第一個字符串中的所有内容。

5、打印輸出要換行,自然還是用到一個計數法。

代碼實現

//字符串的冒泡排序 #include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int N;//N個整數 int K;//掃描K遍 scanf("%d %d", &N,&K);//第一行給出N和K char bubble[10][100]; char Temp[100];//Temporary Variable,一個臨時變量來存儲元素 int count = 0;//計數法 if(K>=N){ scanf("%d %d", &N,&K);//第一行給出N和K } if(N>100){ scanf("%d %d", &N,&K);//第一行給出N和K } if(K<1){ scanf("%d %d", &N,&K);//第一行給出N和K } for(int i=0; i < N;i ){ scanf("%s",bubble[i]); } for(int i=0; i < N;i ){ if(islower(bubble[i]==0)){//如果字符串中有大寫字母,就重新輸入 scanf("%s",bubble[i]); } } for(int j = 0; j < K; j ){ for(int i = 0; i < N-1; i ){ if(strcmp(bubble[i],bubble[i 1])>0){//比較前一個字符串和後一個字符串的大小 strcpy(Temp, bubble[i 1]); strcpy(bubble[i 1], bubble[i]); strcpy(bubble[i], Temp);//交換位置 } } } for(int q = 0; q < N;q ){//打印輸出最終結果 if(count!=0){ printf("\n"); } printf("%s", bubble[q]); count ; } }

結果測試

c語言冒泡排序法例子(用C語言實現字符串的冒泡排序)3

c語言冒泡排序法例子(用C語言實現字符串的冒泡排序)4

總結

這兩天的内容都是圍繞字符串的函數來講的,關鍵還是C語言當中的有些特定庫函數要熟悉,熟悉之後解決題目也會比較方便。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved