围坐成一圈的12个小朋友,每个人身上都有若干个苹果,大人要选出哪5个挨着坐的小朋友手中的苹果总数最多,你能帮助大人们编写一个程序来确定吗?请使用循环和数组实现。

试题描述

围坐成一圈的12个小朋友,每个人身上都有若干个苹果,大人要选出哪5个挨着坐的小朋友手中的苹果总数最多,你能帮助大人们编写一个程序来确定吗?请使用循环和数组实现。

输入

输入12个整数,表示12个小朋友分别的苹果数。邻近两数之间用一个空格隔开。

输出

输出从第几个小朋友开始苹果总数最多。

输入示例

12 32 24 53 52 30 37 82 87 67 98 78

输出示例

8

数据范围

输入和输出均为int范围的整数

一个实现:

#include <stdio.h>

int main(void){
    
    int index=1;
    int sum = 0;
    int temp = 0;
    int i,j;
    int apple[12];
    
    //获取12个输入 
    for(i=0;i<12;i++){
        scanf("%d",&apple[i]);
    }
    
    
    //循环判断第几个孩子开始的五个人苹果最多 
    for(i=0;i<8;i++){
        temp=0;        
        for(j=i;j<i+5;j++){
            temp+=apple[j];
        //    printf("j=%d,temp=%d\n",j,temp);
        }
        if(temp>sum){
            sum=temp;
            index=i+1;
        }        
    }
    
    //打印结果 
    printf("%d",index);
    
    return 0;
    
    
    
}

申请一个17个元素的数组,a[12]到a[16]重复a[0]到a[4]的值,然后遍历数组找最大值就可以了。代码如下

img

代码:


#include <stdio.h>
int main()
{
    int a[17],i,j,sum,max=0;
    int index = 0;
    for(i=0;i<12;i++)
    {
        scanf("%d",&a[i]);
    }
    //重复前5个小朋友的苹果数目
    for(i=12;i<17;i++)
        a[i] = a[i-12];
    for (i=0;i<12;i++)
    {
        sum = 0;
        for(j=0;j<5;j++)
            sum += a[i+j];
        if(sum > max)
        {
            max = sum;
            index = i;
        }
    }
    printf("%d",index+1);
    return 0;
}