找出最大数,并且计算其出现次数
编写程序读取正整数,找出它们的最大数,然后计算该最大数出现的次数。输入以-1结束
思路写在注释
#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;
}
循环两次吧。
定义一个数组,接收输入整数。输入过程中即判断最大数是多少
再次循环,如果数组元素等于最大数,则计数加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,怎么办?遍历啊,在第一的基础上,我们知道了最大的数是什么,然后遍历数组,如果等于这个数就记录
你看,问题迎刃而解了