7-60 刪除重複字元 (20 分)
阿新 • • 發佈:2018-12-15
7-60 刪除重複字元 (20 分)
本題要求編寫程式,將給定字串去掉重複的字元後,按照字元ASCII碼順序從小到大排序後輸出。
輸入格式:
輸入是一個以回車結束的非空字串(少於80個字元)。
輸出格式:
輸出去重排序後的結果字串。
輸入樣例:
ad2f3adjfeainzzzv
輸出樣例:
23adefijnvz
這題關鍵在於刪除多個連續相同的字元
#include <stdio.h> void del (char *str); void order (char *str); int main () { char str[80]; gets(str); del (str); order (str); puts(str); return 0 ; } void del ( char *str ){ //刪除重複 int i,t,j,len,temp; len = strlen(str); for ( i=0; i<len-1; i++) { for ( t=i+1; t<len; ){ if ( *(str+i) != *(str+t)) //防止多個連續相同的數 t++; else { for ( j=t+1; j<len; j++) *(str+j-1) = *(str+j); len --; } } } *(str+len) = '\0'; } void order ( char *str){ //排序 int i,j,len; char t; len = strlen(str); for ( j=len; j>0; j--){ for ( i=1; i<j; i++) if ( *(str+i-1) > *(str+i)) { t = *(str+i-1); *(str+i-1) = *(str+i); *(str+i) = t; } } }