C程序计算数字数组中最大重复次数

时间:2017-01-03 17:04:27

标签: c arrays

我编写此代码来计算并打印10个数字数组中最高重复的数字。问题是这个程序没有counter++,而数字与数组中的最后一个数字相同。

以下是代码:

#include <stdio.h>
#define SIZE 9

int main () {
    float Student[SIZE],grade,maxValue;
    int i,j,k,slot,counter=0,maxCount=-1;
    printf("Enter the grade of 10 students \n");
    for(i=0;i<=SIZE;i++){
        printf("Enter student %d grade : ",i+1);
        scanf("%f",&Student[i]);
    }
    for(j=0;j<=SIZE;j++){
        grade = Student[j];
        counter = 0;    
        for(k=0;k<=SIZE;k++){
            if(k == j){
                continue;
            }
            if (grade == Student[k]){
                counter++;
            }
            if (counter > maxCount) {
                maxCount = counter;
                maxValue = grade;
            }

        }
    }

    if(maxCount == 0 ){
        printf("There are no duplicate numbers.\n");
    }else{
        printf("%.2f repeated %d times.\n",maxValue,maxCount);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:2)

I和j从0初始化,条件将被检查直到大小为1。因此,请在两个循环中将条件从j<=SIZE更改为j<SIZE

答案 1 :(得分:0)

还有一个错误,正如你的问题所说,你有10个数字,SIZE仍然设置为9.下面的代码工作正常。它几乎与您的代码类似,但您应该注意到一些差异。

#include <stdio.h>
#define SIZE 10

int main () {
    float Student[SIZE],grade,maxValue;
    int i,j,k,slot,counter=1,maxCount=1;
    printf("Enter the grade of 10 students \n");
    for(i=0;i<SIZE;i++){
        printf("Enter student %d grade : ",i+1);
        scanf("%f",&Student[i]);
    }
    for(j=0;j<SIZE;j++){
        grade = Student[j];
        counter = 1;
        for(k=0;k<SIZE;k++){
         if (grade == Student[k] && j!=k) {
                counter++;
         }
            if (counter > maxCount) {
                maxCount = counter;
                maxValue = grade;
            }

        }
    }

    if(maxCount == 1 ){
        printf("There are no duplicate numbers.\n");
    }else{
        printf("%.2f repeated %d times.\n",maxValue,maxCount);
    }
    return 0;
}

答案 2 :(得分:-1)

我修复了自己,我将此代码添加到if(k==j)

if(Student[9]){
counter++;
}

之后continue;