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