不知道怎么写,没有思路,请求帮助!

找出最大数,并且计算其出现次数
编写程序读取正整数,找出它们的最大数,然后计算该最大数出现的次数。输入以-1结束

思路写在注释

img


#include <stdio.h>
#include <limits.h>
int main()
{
    int number, max = INT_MIN, count = 0;    // max = INT_MIN将max初始化为最小值
    while (scanf("%d", &number) == 1 && number != -1) {   // 循环输入数字,输入-1循环结束
        if (max <= number) {      // 判断遍历到的数字是否大于等于前面遍历到的最大数字max
            if (max == number) {   // 如果满足上一条件且当前遍历到数字等于之前最大值,记录改数出现次数
                count++;
            }
            else {
                max = number;     // 否则满足上一条件且当前遍历到数字大于之前最大值,说明该最大值第一次出现,将出现次数count记为1
                count = 1;
            }
        }
    }
    printf("max_number=%d count=%d", max, count);
    return 0;
}

#include <stdio.h>

int
main(int argc, char *argv[]) {

    int arr[] = {2,3,2,12,19,19,4, 3};
    int max = arr[0];
    int count = 0;

    for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
        if (arr[i] > max)
            max = arr[i];
    }
    for (int j = 0; j < sizeof(arr)/sizeof(arr[0]); j++) {
        if (arr[j] == max)
            count++;
    }
    printf("最大数为:%d, 出现的次数为:%d\n", max, count);

    return 0;
}

img

循环两次吧。
定义一个数组,接收输入整数。输入过程中即判断最大数是多少
再次循环,如果数组元素等于最大数,则计数加1


int num[10] = { 0 };//将输入的数存入数组
    int count = 0;
    int i = 0;
    int max = 0;
    scanf_s("%d", &num[0]);//先输入第一个数
    for(i = 1; i<10 ;i++ )
    {
        scanf_s("%d", &num[i]);//在输入剩余的数
        if (num[i] ==-1)//输入-1退出循环
            break;
        if (num[i] > num[i - 1])//将其中最大的数取出来
        {
            max = num[i];
        }
        else
        {
            max = num[i - 1];
        }
    }
    while (num[i] != -1)//再循环一边计算最大数出现了几次
    {
        if (max == num[i])
            count++;
    }
    printf("%d,%d", max,count);

新手很正常。对于新手建议只要可以解决问题既可以,最后熟练了之后,在追求复杂度种种。
我们分析一下这个问题,有两个我们需要编码实现:
1、找到最大的数
2、看他出现了几次

对于1,怎么办?遍历啊一个for循环 解决了
对于2,怎么办?遍历啊,在第一的基础上,我们知道了最大的数是什么,然后遍历数组,如果等于这个数就记录
你看,问题迎刃而解了