回覆列表
-
1 # TonyDeng
-
2 # 深夜最科技
1 /*
2 思路:
3 將字串存入字元陣列a中,設將值複製給陣列b,遍歷b的每個元
4 素,與a中的每個元素比較,有相同則b中對應元素置為-1。
5 輸出b中不為-1的元素。
6 */
7 #include<stdio.h>
8 #include<string.h>
9 char a[100],b[100];
10 void Del(int index,int len){
11 for(int i=0;i<len;i++){
12 if(index == i) continue;//下標相同即同一個元素不比較,進入下一個迴圈
13 if(b[index] == a[i]) b[index]=-1;//有相同元素,置值為 -1
14 }
15 }
16 int main(){
17 gets(a);
18 memcpy(b,a,sizeof(a));//將a的元素複製給b
19 int len=strlen(a);//求a的長度
20 for(int i=0;i<len;i++){
21 Del(i,len);
22 }
23 for(int i=0;i<len;i++){//輸出b中非-1的元素
24 if(b[i]!=-1){
25 printf("%c",b[i]);
26 }
27 }
28 return 0;
29 }
比較簡單的基礎題。分兩個步驟,關鍵是第一步,排序,由於資料量不大,應用冒泡法就可以了。
第二步用點取巧法,前面排序是必須的,那樣所有相同的資料必定會排列在一起,所以可以邊輸出邊排查重複資料。迴圈遍歷整個陣列,輸出第0個元素,迭代後,用後面的元素與前面的比較,如果相同,即是重複的,不輸出(不輸出不等於刪除,要注意這點區別),接著迴圈,直到與前面元素不等,就是新資料,如此迴圈完畢即可。
為免程式設計麻煩,用一箇中間變數把比較值儲存起來,則不必在下標計算上費腦筋。記元素和記下標是一樣的,都需要中間記憶變數。