回覆列表
-
1 # 使用者1544498650998
-
2 # 鵝卵石俄羅斯
//刪除字串中重複的字元並排序#define N 6#include<stdio.h>main(){ //定義變數 int i,j,k,n=0; char ch[100],t; //輸入 for(i=0;i<N-1;i++) scanf("%c",&ch[i]); //刪除重複字元 for(i=0;i<N-1-n;i++) { for(j=0;j<i;j++) { if(ch[i]==ch[j]) { for(k=j;k<N-1-n;k++) ch[k]=ch[k+1]; j--; n++; } } } //輸出(無重複字元) k=N-n-1; for(i=0;i<k;i++) printf("%c",ch[i]); printf(" "); //排序(冒泡法) for(i=0;i<k-1;i++) { for(j=0;j<k-1-i;j++) { if(ch[j]>ch[j+1]) { t=ch[j]; ch[j]=ch[j+1]; ch[j+1]=t; } } } //輸出(無重複字元並排序) for(i=0;i<k;i++) printf("%c",ch[i]); printf(" "); //結束 return 0; }
#include<stdio.h>
void main()
{
char a[100],b[100];
//定義兩個字元組,a[100]用來接收輸入的字串,b[100]用來儲存不重複的字元
int pa=0,pb=0,i,flag;
scanf("%s",a);
//輸入字串到a[100]中,用scanf讀入到a[100]中會自動在a[100]中字串結束的地方加上"\0"
for(pa=0;a[pa]!="\0";pa++)
//for迴圈結束的條件是a[pa]==0,也就是從a[100]字元組中讀取一個字元,直到沒有
{
flag=1;
//flag是個標誌符,當flag==1時,說明這個字元(下句中的a[pa])是第一次出現,應該加入到b[100]中
//如果flag==0,說明這個字元(下句中的a[pa])重複了,不應該加到b[100]中
for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;
//把a[100]中讀取的字元a[pa]與b[100]中的所有字元進行比較,如果b[i]==a[pa]
//說明這個字元已經在b[100]中了,也就是重複字元了,所有將flag=0,不能加入b[100]中
//如果a[pa]與b[100]中的所有字元都不相等,說明這個字條是第一次出現,應該加到b[100]
if(flag)
{
b[pb]=a[pa];pb++;
}
//如果flag==1,則將a[pa]這個字元加入到b[100]中,然後將pb加1
}
b[pb]="\0";
//當所有的不重複的字元都加入到b[100]中時,將b[100]中字元結束的地方加"\0",也就是b[pb]="\0"
//因為字串都是民"\0"結尾的,所以加上這句
printf("%s\n",b);
}