x7u 发表于 2021-4-16 22:52:34

c语言求数组中元素出现次数最多的一个中的一个小问题点。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
        int t;
        while(scanf("%d",&t)!=EOF){
                getchar();
                int *p,i,j,a={0},max,max_=0;
                p=(int*)malloc(t*(sizeof(int)));
                memset(p,0,t);
                for(i=0;i<t;i++){
                        scanf("%d",&p);
                }
                for(i=0;i<t;i++){
                        a]++;
                        }
                max=a;
                for(i=0;i<20;i++){
                        if(a>max){
                                max_=i;
                        }
                }
                printf("%d\n",max_);
        free(p);
        }
       
        return 0;
}

上述代码这样输出会有问题,但在max_=i;上多加一个max=a;即可输入正确,为什么?

就是要努力呀 发表于 2021-4-17 10:10:41

max = a;
a > max;
max表示已知的最大值, a > max 说明出现了比max更大的值, max不是应该更新成新的最大值吗
页: [1]
查看完整版本: c语言求数组中元素出现次数最多的一个中的一个小问题点。