c語言數組輸出重復
① c語言,查找數組里重復出現的數字;
//如果這題目是在oj上,請去掉所有的注釋
#include<stdio.h>
intmain()
{
//用數組下標1~104表示輸入的數字
//用數組每個元素的值表示該下標對應的元素輸入次數
inta[105]={0},i,n,ni,max;
scanf("%d",&n);
max=a[0];
for(i=0;i<n;i++)
{
scanf("%d",&ni);
a[ni]++;
if(max<a[ni])
max=a[ni];
}
for(i=104;i>0;i--)//想想為什麼倒著比較
{
if(a[i]==0)continue;
if(max==a[i])
{
printf("%d%d ",i,a[i]);
break;
}
}
return0;
}
② c語言如何判斷一個數組中重復元素的個數,並輸出這個個數的值
如下:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intn;
int*a;
inti;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(intj=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
inttmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
inttmp=a[0];
intcount=1;
for(i=1;i<n;i++)
{
if(tmp==a[i])
{
count++;
}
else
{
if(count>1)
{
printf("數組共有%d個數字%d ",count,a[i-1]);
}
tmp=a[i];
count=1;
}
}
if(count>1)
{
printf("數組共有%d個數字%d ",count,a[i-1]);
}
free(a);
return0;
}
我的思路是,先排序,再輸出。
③ 在c語言中輸入數組兩個數組,查找重復元素並輸出怎麼寫啊
可以一次讀入N個數據。可以考慮以回車結束讀入的一組。
參考如下寫法:
#include "stdio.h"
#define Max 100
int X[Max]={0,},Y[Max]={0,};
int main()
{
int i=0,j=0;
int a,b;
char c=0;
printf("輸入第一個數組(以空格分開,回車結束)");
while((c!='\n'))
scanf("%d%c",X+i++,&c);
c=0;
printf("輸入第二個數組(以空格分開,回車結束)");
while((c!='\n'))
scanf("%d%c",Y+j++,&c);
for(a=0;a<i;a++)
for(b=0;b<j;b++)
if(X[a]==Y[b])
printf("%d \t",X[a]);
return 0;
}
④ 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語言排序後刪除數組中重復的數字再排序輸出
#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]!='