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>。