㈠ c語言問題,數組去重問題,
int main ()
{
int array[100];
int count = 0;
int result = 0;
int index = 0;
int val = 0;
int i = 0;
printf( "請輸入數組長度及其數組數據:
" );
while( 1 )
{
result = scanf ("%d" , &val);
if( count == 0 )
{
memset(array, 0, sizeof(int)*100 );
count = val;
if(count > 100 || count < 2 )
{
printf( "輸入的數組長度必須大於2並且小於100!
" );
fflush(stdin);
count = 0;
continue;
}
}
else
{
if( val >= 100 || val < 0 )
{
printf( "輸入的數組數據必須為小於100的正整數!
" );
fflush(stdin);
count = 0;
continue;
}
array[val] = 1;
index++;
if( result == 1)
{
if( index == count )
{
break;
}
}
}
}
printf( "排序後的數組長度及其數組數據:
" );
count = 0;
for( i = 0x00 ; i < 100 ; i ++ )
{
if(array[i] == 1 )
count++;
}
printf( "%d", count);
for( i = 0x00 ; i < 100 ; i ++ )
{
if(array[i] == 1 )
printf( " %d", i);
}
printf( "
");
system(" PAUSE");
}
㈡ c語言有n個整數,去除其中重復的數字
#include<stdio.h>
#defineM1024
voidmain(){inti,j,n,nn,a[M],b;
scanf("%d",&n);if(n>M)n=M;
for(i=0;i<n;i++)scanf("%d",&a[i]);
for(i=nn=1;i<n;i++){
for(j=b=0;j<nn;j++)if(a[i]==a[j]){b=1;break;}
if(b==0){a[nn]=a[i];nn++;}
}
for(i=0;i<nn;i++)printf("%d",a[i]);printf(" ");
}
㈢ C語言數組去除重復內容
用兩個游標控制,可以方便的實現,參考代碼如下:
#include<stdio.h>
#define SIZE 12
int a[SIZE]={0,0,0,1,2,2,3,4,4,5,5,44};
int main()
{
int i=1,j=0;
while(i<SIZE)
if(a[j]!=a[i]){
++j;
a[j]=a[i];
++i;
} else ++i;
for(i=0;i<=j;++i){
printf("%d",a[i]);
if(i<j)printf(",");
}
return 0;
}
㈣ c語言編程:刪除一批正整數中重復的值
#include "stdio.h"
int main()
{
int a[10],i,j,k;
printf("輸入10個整數: ");
for(i=k=0;i<10;i++)
{
scanf("%d",&a[k]);
for(j=0;j<k;j++)
if(a[k]==a[j])k--;
k++;
}
printf("去重以後的數: ");
for(i=0;i<k;i++)
printf("%d ",a[i]);
printf(" ");
return 0;
}
㈤ c語言把讀入的一批整數(不超過100個)去掉重復後輸出. 輸入先是一個正整數,記作n,然後是
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta[100],i,n,n0,t,fd;
n0=0;
scanf("%d",&n);
while(n--){
scanf("%d",&t);
i=fd=0;
while(i<n0)
if(a[i++]==t){
fd=1;break;
}
if(!fd)
a[n0++]=t;
}
for(i=0;i<n0;i++)
printf("%d",a[i]);
}
㈥ C語言刪除一個整型數組裡面重復的元素
利用雙重循環,將每個值依次與其後面的值相比較,如果有相同的則刪除該元素即可。
刪除時,可以使用將後面元素依次向前移動一位,同時總長度減一的方式。
參考代碼如下:
intremove_repeat(int*a,intl)
{
inti,j,k;
for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)//對後面每個元素比較,去重。
{
if(a[j]==a[i])//發現重復元素。
{
for(k=j+1;k<l;k++)//依次前移一位。
a[k-1]=a[k];
l--;//總長度減一。
}
}
}
returnl;//返回新的長度值。
}
㈦ C語言輸入正整數n和n個1~10000之間的整數,對這n個數去重輸入數
#include<stdio.h>
intmain()
{
intn;
intnums[10];
intcount=0;
inttemp;
inti,j;
printf("Entern:");
scanf("%d",&n);
if(n>10||n<1)
n=10;
printf("Enter%dnumber: ",n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
for(j=0;j<count;j++)
{
if(nums[j]==temp)
break;
}
if(j==count)
nums[count++]=temp;
}
for(i=0;i<count;i++)
printf("%d",nums[i]);
return0;
}
㈧ 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語言問題,刪除整型數組內重復的項並輸出,如能解惑,不勝感激。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(intargc,char*argv[])
{
srand((unsigned)time(0));
ints[30]={0};
inti,j;
for(i=0;i<30;i++)
{
s[i]=rand()%10;
}
printf("
源數組:");
for(i=0;i<30;i++)
{
printf("%d",s[i]);
}
j=0;
while(j<30)
{
if(s[j]==-32767)
{
j++;
continue;
}
for(i=j+1;i<30;i++)
{
if(s[j]==s[i])
{
s[i]=-32767;
}
}
j++;
}
printf("
目標數組:");
for(i=0;i<30;i++)
{
if(s[i]!=-32767)
printf("%d",s[i]);
}
return0;
}
㈩ C語言關於去重和排序
建議你先排序,再去重。這樣檢查後一個元素與前一個元素相同則刪除,否則留著,多簡單!~