C 找到重复的数字,首先打印出重复最多的数字,然后打印出其余的数字

C 找到重复的数字,首先打印出重复最多的数字,然后打印出其余的数字,c,arrays,sorting,C,Arrays,Sorting,到目前为止,我已经设法找到了重复的数字,但我想读入输入并确定列表中是否有任何重复的元素。如果所有值都是唯一的,则打印出“列表中没有重复值”,否则,打印出列表中从左到右出现的重复值(每个值由换行符分隔) 我需要打印出列表中重复次数最多的数字,然后是第二个重复次数最多的值。我该怎么做?我知道我必须编辑if语句,但我不确定如何编辑 #include <stdio.h> #include <stdbool.h> #define size 50 int main(void) {

到目前为止,我已经设法找到了重复的数字,但我想读入输入并确定列表中是否有任何重复的元素。如果所有值都是唯一的,则打印出“列表中没有重复值”,否则,打印出列表中从左到右出现的重复值(每个值由换行符分隔)

我需要打印出列表中重复次数最多的数字,然后是第二个重复次数最多的值。我该怎么做?我知道我必须编辑if语句,但我不确定如何编辑

#include <stdio.h>
#include <stdbool.h>

#define size 50

int main(void)
{       
   int i, j, n, du, dup[size];
   bool copy = false;

   scanf("%d", &n);

   for (i=0; i<n; i++) {
      scanf("%d", &dup[i]);
   }

   for (i=0; i<n; i++) {     
      for (j=0; j<n; j++) {
         if (dup[i] == dup[j] && j!=i) {
            copy = true;
         }
      }
   }

   if (copy) {
      printf("list has duplicate values");
   }
   else {
      printf("list has no duplicate values");
   }
   printf("\n");

   return 0;
}
#包括
#包括
#定义尺寸50
内部主(空)
{       
int i,j,n,du,dup[大小];
bool copy=false;
scanf(“%d”和“&n”);
对于(i=0;i
#包括
#包括
#定义尺寸50
int-int排序(int*val1,int*val2){
返回(*val1*val2)?1:0;
}
内部主(空)
{       
int i,j,n,du,dup[大小];
bool copy=false;
printf(“元素数:”);
scanf(“%d”和“&n”);
如果(n50)n=50;
printf(“输入元素:\n”);
对于(i=0;i
#包括
#包括
#定义尺寸50
类型定义结构{
int值,dup;
}列表输入;
/*______________________________________________________________
*/
整数比较(列表项*val1,列表项*val2){
返回(val1->dup->val2->dup)?-1:(val1->dup)?1:0;
}
/*______________________________________________________________
*/
整数补遗(列表项*项,整数值){

for(int i=0;iIt必须是字符串中的重复字符101课时。刚刚回答这个问题时,最好更改
for(j=0;jIf
1 3 3 4 4
1)中的输入应该
3
打印12或3次?2)是否必须维持顺序,或者
4 3
是否正常?您好,感谢所有回复。如果输入为133344示例,则输出应先打印3,然后打印4。两者仅打印一次。
#include <stdio.h>
#include <stdbool.h>

#define size 50

int intsort(int* val1,int *val2){
    return (*val1<*val2)?-1:(*val1>*val2)?1:0;
}

int main(void)
{       
   int i, j, n, du, dup[size];
   bool copy = false;

   printf("number of elements: ");
    scanf("%d", &n);
    if(n<2) n=2;
    if(n>50) n=50;


    printf("enter elements:\n");

   for (i=0; i<n; i++) {
      printf("\t%d) ",i+1);
      scanf("%d", &dup[i]);
   }


    j=0;i=0;
   qsort(dup,n,sizeof(int),intsort);


    printf("\n=========\n");
    for(i=0;i<n;i++) printf(" %d",dup[i]);
    printf("\n=========\n");

    i=0;
    while(i<(n-1)){

        for(j=i+1;dup[i]==dup[j];j++);
        copy=(i+1)<j;
        if(copy){

            printf("there are %d copies of %d \n",(j-i),dup[i]);
        }
        i=j;
    }
    if(!copy){
        printf("No duplicated items \n");
    }
    printf("Done\n");


   return 0;
}
#include <stdio.h>
#include <stdbool.h>

#define size 50

typedef struct{
    int value,dup;
}LIST_ENTRY;


/*______________________________________________________________
*/
int CompareEntries(LIST_ENTRY* val1,LIST_ENTRY *val2){
        return (val1->dup>val2->dup)?-1:(val1->dup<val2->dup)?1:0;
}
/*______________________________________________________________
*/
int AddEntry(LIST_ENTRY * Entries,int val){
    for(int i=0;i<size;i++){
        if(Entries[i].value==val){
            Entries[i].dup++;
            return 1;
        }
    }

    for(int i=0;i<size;i++){
        if(Entries[i].dup==0){
            Entries[i].value=val;
            Entries[i].dup++;
            return 0;
        }
    }
    return 0;
}
/*______________________________________________________________
*/
void ClearEntries(LIST_ENTRY * Entries){
    for(int i=0;i<size;i++){
        Entries[i].value=0;
        Entries[i].dup=0;
    }
}
/*______________________________________________________________
*/
int main(void)
{       
    int i, d,n;
    bool copy = false;
    LIST_ENTRY Entries[size];

    ClearEntries(Entries);


   printf("number of elements: ");
    scanf("%d", &n);
    if(n<2) n=2;
    if(n>50) n=50;


    printf("enter elements:\n");

   for (i=0; i<n; i++) {
      printf("\t%d) ",i+1);
      scanf("%d", &d);
      copy|=AddEntry(Entries,d);
   }



   qsort(Entries,n,sizeof(LIST_ENTRY),CompareEntries);


    printf("\n=========\n");
    for(i=0;i<n;i++) {
        if(Entries[i].dup){
            printf("there are %d copies of %d\n",Entries[i].dup,Entries[i].value);
        }
    }
    printf("\n=========\n");


    if(!copy){
        printf("No duplicated items \n");
    }
    printf("Done\n");


   return 0;
}