c語言找重復
A. c語言一個數組中重復的數字
#include<stdio.h>
int main(void)
{
int i, n, a[100];
int j, temp;
printf("輸入元素的個數:");
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]); //循環輸入n個數
for (i = 0; i < n; i++) //循環判斷數組中每一個數
{
for (j = i + 1; j < n; j++) //判斷a[i]後邊的數是否和a[i]相等
{
if (a[i] == a[j])
{
for (temp = j; temp < n; temp++)
a[temp] = a[temp + 1]; //將a[j]後面的元素全往前移一個位置
j--; //a[j+1]取代a[j]位置,為使下次從a[j+1]開始查找,j減一(為使j保持不變)
n--; //數組長度減一
}
}
}
printf("剩餘元素個數: %d\n", n);
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
B. C語言,查找數組里重復出現的數字;
檢查一個數中每位的數字是否重復,
n%10來得到當前最小位的值,
每次迭代都n/=10 ,使得數字都向右移動一位
n>0來檢測是否已經檢測完了。
比如123這個數;
n%10
==
3,說明3已經出現,所以digit_seen[3]
==
true了,如果檢測到digit_seen[3]
==
true,說明已經有3這個數字了,就重復了,所以就直接跳出循環,此時n!=0,再通過檢測n就可以判斷了。
n/=10來將數字向右移動一位,這個時候n
==
12
繼續前兩步,直到n=0(因為任何小於等於9的整形數除以10都是0)
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;
}
D. c語言查找並輸出重復字元串
//#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidstringsort(char(*p)[1000],intm)//排列字元串,長的字元串在前面,短的在後面。
{
inti,j;
charc[1024];
for(i=0;i<m-1;i++)
{
for(j=0;j<m-1-i;j++)
if(strlen(p[j])<strlen(p[j+1]))
{
strcpy(c,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],c);
}
}
}
intsubstr(char*str,char*p)//判斷p是否是str的字串,是的話返回1,不是返回0
{
inti,j;
for(i=0;str[i];i++)
{
for(j=0;str[i]==p[j]&&p[j];i++,j++);
if(p[j]==0)
{
return1;
}
if(j!=0)
{
i--;
}
}
return0;
}
intmain(void)
{
charstr[1000]="abc1243128129a343abc";
charss[1024]={0};//放子串的臨時數組
charss1[1000][1000];//所有長度大於1的子串放入這里
intm=0;//子串的個數
inta[1024]={0};//統計子串的個數的數組
inti,j;
for(i=0;str[i];i++)
{
memset(ss,0,1024);
intk=0;
ss[k++]=str[i];
for(j=i+1;str[j];j++)
{
ss[k++]=str[j];
strcpy(ss1[m++],ss);
}
}
//上面這段程序是找出字元串長度大於1的所有子串
stringsort(ss1,m);//把這些字串按長度放入ss1中,長的在前面,短的在後面
for(i=0;i<m;i++)
{
char*p=str;
while((p=strstr(p,ss1[i]))!=NULL)
{
a[i]++;
p=p+strlen(ss1[i]);
}
}//這段程序是找到每一個子串出現的次數,並放入a數組中
for(i=0;i<m;i++)
{
intflag=0;//標記符
for(j=0;j<i;j++)
{
if(substr(ss1[j],ss1[i])&&a[j]==a[i])//比如abc出現了三次,而bc出現三次,那麼只輸出abc的次數
{
flag=1;
}
}
if(a[i]>1&&flag==0)
printf("%s:%d ",ss1[i],a[i]);
}
//system("pause");
return0;
}
//寫了一晚上,真是不容易啊
E. C語言的bsearch函數遇到重復元素怎麼找出來
這個理論上使用的是二分查找的方法,一般的二分查找,要求數組是升序的,最後的返回值也是一個指針,所以如果有重復值的話是找不出來的,需要你去用一般二分查找去判定左值和右值,才能找到重復區間。
F. C語言,判斷某整數中是否存在重復數字.怎麼寫
#include<stdio.h>
#include<stdbool.h>
intmain()
{
longintnum,temp;
inti=1;
printf("請輸入一個整數:");
scanf("%ld",&num);
temp=num;
//獲取所輸入整數的位數。
while(temp/10>0){
i+=1;
temp=temp/10;
}
//列印所輸入整數的位數,並定義一個bool型數組。
printf("該數為%d位數。\n",i);
boola[i+1];
//初始化數組中所有元素為0.
for(intj=0;j<i+1;j++){
a[j]=0;
}
//判斷是否有重復的數字。
<spanstyle="color:#ff0000;">do{
intn=num%10;
if(a[n]==1){
printf("出現重復了。\n");
break;
}
a[n]=1;
num/=10;
}while(num);</span>
if(num==0){
printf("沒有重復。\n");
}
return0;
}
(6)c語言找重復擴展閱讀:
return 表示從被調函數返回到主調函數繼續執行,返回時可附帶一個返回值,由return後面的參數指定。 return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。
如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
如果函數名前有返回類型定義,如int,double等就必須有返回值,而如果是void型,則可以不寫return,但這時即使寫了也無法返回數值。
G. C語言編程,輸入兩組三位數,找出重復數字的代碼
#include"stdio.h"
main()
{
inti,j,k,l;
inta[6]={0};
intb[6]={0};
printf("請輸入第1組3個數 ");
scanf("%d",&i);
printf("請輸入第2組3個數 ");
scanf("%d",&j);
a[0]=i/1%10;
a[1]=i/10%10;
a[2]=i/100%10;
a[3]=j/1%10;
a[4]=j/10%10;
a[5]=j/100%10;
printf("重復的是: ");
i=0;
j=0;
k=0;
l=0;
for(i=0;i<6;++i)
{
for(j=i+1;j<6;++j)
if(a[i]==a[j])
{
for(k=0;k<l;++k)//遍歷b,是否已記錄
{
if(a[i]==b[k])
break;
}
if(k==l)//沒有,則加入,長度+1
b[l++]=a[i];
}
}
for(i=0;i<l;++i)
{
printf("%d",b[i]);
}
printf(" ");
return0;
}
請把分給我,謝謝,祝玩的愉快
H. 在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;
}
I. 怎樣用C語言判斷一個整數中有沒有重復的數
用C語言判斷一個整數中有沒有重復的數的具體操作步驟如下:
1、編寫頭函數:#include <stdio.h>。