怎样用C语言判断一个整数中有没有重复的数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言判断一个整数中有没有重复的数相关的知识,希望对你有一定的参考价值。

直接手打,没有调试,你看看吧,思路很简单

bool hehe(int sum)

int a[10]=0;   //  弄个数组,把0-9都存起来
//假设你的数字是num
while(sum)

    int s = sum%10;   //  这就能获取最小的一位的数字
    a[s]++;
   bool flag = find(a,10);
  if(!bool)   
     return true;    //  不好意思,发现了又重复的数字,直接返回结果
   s/=10;

return false;     //  这里说明了 没有重复的数值

//  再弄个函数,检测出现的次数
bool find(int a[],int n)

    for(int i=0;i<n;i++)
    
        if(a[i]==1 || a[i]==0)  continue;
       else
            return   false;
   
   return true;
  //  返回真的,表示暂时没有重复的值

 //  这是之前的代码,突然想到完全没必要这个,在o(n)的复杂度就可以实现的

bool hehe(int sum)

int a[10]=0;   //  弄个数组,把0-9都存起来
//假设你的数字是num
while(sum)

    int s = sum%10;   //  这就能获取最小的一位的数字
    a[s]++;
   //  修改的地方在这里!!!至于那下面的函数则完全可以不用,这种方法,有点类似于hash的想法
   if(a[s]>1)   return true;
   /*
  if(!bool)   
     return true;    //  不好意思,发现了又重复的数字,直接返回结果
     */
   s/=10;

return false;     //  这里说明了 没有重复的数值

参考技术A 要代码还是解决方法?,解决方法是将它转换为字符串,然后从第一个开始和后面的对比, 参考技术B int Array[]=0,1,2,3,4,5,2;
int nCount = sizeof(Array)/sizeof(int);
bool bIsExisted = false;
for(int j=0; j<nCount;j++)

for(int k=j+1; k<nCount;k++)

if(Array[n]==Array[j])

bIsExisted = true;
break;


bIsExisted ?break:continue;


assert(bIsExisted==true);

在C语言中,怎样判断两个整型的数相等

参考技术A if(a==b)
printf(“a,b相等”);
参考技术B if (a==b) 这样判断a=b

以上是关于怎样用C语言判断一个整数中有没有重复的数的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中,怎样判断两个整型的数相等

C语言中,怎样判断一个数组中是不是有重复元素呢?最好用程序实现

C语言中如何判断整数是不是为平方数

C语言,判断某整数中是不是存在重复数字。怎么写呢?

C语言,查找数组里重复出现的数字;

用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数