當前位置:首頁 » 編程語言 » 數據結構c語言刪除重復值代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

數據結構c語言刪除重復值代碼

發布時間: 2023-06-14 07:48:43

c語言,刪除數組中的重復數字然後輸出

#include "stdio.h"

#include "string.h"

void main()

{

int i,k=1,j=10,a[10]={4,4,4,4,5,4,9,9,9,10};

for(k=i=1;i<10;i++)

{

for(j=0;j<k;j++)

{

if(a[j]==a[i]) break;

}

if(j==k) a[k++]=a[i];

}

printf(" ");

for(i=0;i<k;i++)

{

printf(" %d ",a[i]);

}

(1)數據結構c語言刪除重復值代碼擴展閱讀:

printf()函數的調用格式為:printf("&lt;格式化字元串&gt;",&lt;參量表&gt;)。

其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。

比如:

int a=1234;

printf("a=%d ",a);

輸出結果為a=1234。

scanf()是C語言中的一個輸入函數。與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函數scanf()是從標准輸入流stdin(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。

⑵ 求C語言代碼,刪除字元串中重復字元 如輸入"aabbcc",要求輸出"abc"

字元也可以使用整數來表示,其實整數0-255用%c來輸出就是字元。
#include <stdio.h>
int main() {
char s[256]; /*初始化了一個數組來存放輸入的串*/
int i = 0, tmp[256] = {0}; /*tmp是一個256個整型數組,初始化成全0*/
printf("Enter the string :\n");
gets(s); /*將輸入的串存到s中*/

/*分析每個輸入的字元,如果字元是'a' 則a=97,那麼 tmp[97]將置成1 ,如果下一個字元串還是
'a',那麼同樣tmp[97]置成1,如果下一個字元是'b',那麼tmp[98]將置成1......*/
while(s[i] != '\0')
tmp[s[i++]] = 1;

puts("\nAfter sort and delete operation:");
/*順序輸出255個字元中s串中包含的字元*/
for(i = 0; i < 256;i++)
if(tmp[i])
printf("%c", i);
return 0;
}

那麼等於是說全部ascii字元集是256個,如果有哪個字元那麼就把它標記上,然後再從0開始順序輸出就可以了。

⑶ c語言刪除重復數據

程序的基本思路是把輸入的字元串放到a[100]字元組中,然後把a[100]中所有不重復的字元添加到b[100]中,間接完成對字元串中的重復字元的刪除

#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);
//輸出b[100]中的字元串,也就是刪除過重復字元之後的了
}

⑷ c語言,定義一個數組存放一些數,再輸入數x,把重復的數字刪掉再輸出。

#include<stdio.h>
#include<string.h>
voiddog(char*p,intn);
intmain()
{
intn;
chara[11]="0223456889";
printf("請輸入想刪除的數 ");
scanf("%d",&n);
dog(a,n);
puts(a);
return0;
}
voiddog(char*p,intn)
{
inti,j,k;
k=strlen(p);
for(i=0;i<k;i++)
{
if(*(p+i)==n+'0')//<==================
{
for(j=i;j<k;j++)//<==================
{
*(p+j)=*(p+j+1);
}
k--;
i--;//<======================
}
}
*(p+k)='';
}

⑸ c語言排序後刪除數組中重復的數字再排序輸出

#include<stdio.h>

#include<string.h>

#defineSIZE81

voiddelete_repeat(char*str);

voidbubble_sort(char*str);

intmain()

{

charstr[SIZE];

gets(str);

delete_repeat(str);

bubble_sort(str);

puts(str);

return0;

}

//刪除重復字元

voiddelete_repeat(char*str)

{

/**判斷數組內第i個字元是否與前i-1個字元存在重復:

若重復,刪除該字元,i之後的字元下標均減1,後重新判斷新的第i個字元

若不重復,不做處理,繼續遍歷下一個

*/

for(inti=1;str[i]!='';i++){

for(intj=0;j<i;j++)

{

if(str[i]==str[j])

{

for(intk=i;k<strlen(str)-1;k++)

{

str[k]=str[k+1];

}

str[strlen(str)-1]='';

i--;

}

}

}

}

//冒泡排序

voidbubble_sort(char*str)

{

intswap;

chartemp;

intk=strlen(str);

do{

swap=0;

for(inti=0;i<k-1;i++){

if(str[i]>str[i+1])

{

swap=1;

temp=str[i];

str[i]=str[i+1];

str[i+1]=temp;

}

}

k--;

}while(k>0&&swap);

}

(5)數據結構c語言刪除重復值代碼擴展閱讀

刪除排序數組中的重復項注意事項

不要使用額外的數組空間,必須在原地修改輸入數組並在使用O(1)額外空間的條件下完成,意味著不能通過新建數組存放的方式解決。

可以考慮增加一個游標的方式(命名為:index),遍歷整個數組,當遇到前一個和後一個不相等的時候就給游標自增,這樣的話對於相同的元素可以直接跳過不統計,最後返回」游標的大小+1「(也即不重復的元素的個數)。

⑹ C語言問題 把一個數組中的重復元素去掉

1、首先,點擊桌面上的VC++6.0,打開軟體。