假设某路口一天的24小时平均交通流量表如下,若某连续3个小时的流量为一天内的最大值,则认为是高峰小时时刻,求该路口的高峰小时时刻是几点到几点?要求用C语言编程实现
time avg_flow
0 22.96
1 12.93
2 8.79
3 6.36
4 7.11
5 9.32
6 18.79
7 49.96
8 81.71
9 91.61
10 90.79
11 82.61
12 74.86
13 64.71
14 66.64
15 78.64
16 77.21
17 85.57
18 73.00
19 46.43
20 39.25
21 32.57
22 25.75
23 15.93
用数组保存数据,统计相邻3个小时内的流量,找出最大值即可。
代码如下:
#include <stdio.h>
int main()
{
float a[24],max,tmp;
int i,index=0;
//输入数据
for (i=0;i<24;i++)
scanf("%f",&a[i]);
max = a[0]+a[1]+a[2];
for(i=1;i<21;i++)
{
tmp = a[i]+a[i+1]+a[i+2];
if(tmp > max)
{
max = tmp;
index = i;
}
}
printf("%d-%d",index,index+2);
return 0;
}
如果直接写好数组的话,代码如下:
#include <stdio.h>
int main()
{
float a[24],max,tmp;
int i,index=0;
a[0]= 22.96;
a[1]= 12.93;
a[2]= 8.79;
a[3]= 6.36;
a[4]= 7.11;
a[5]= 9.32;
a[6]= 18.79;
a[7]= 49.96;
a[8]= 81.71;
a[9]= 91.61;
a[10]= 90.79;
a[11]= 82.61;
a[12]= 74.86;
a[13]= 64.71;
a[14]= 66.64;
a[15]= 78.64;
a[16]= 77.21;
a[17]= 85.57;
a[18]= 73.00;
a[19]= 46.43;
a[20]= 39.25;
a[21]= 32.57;
a[22]= 25.75;
a[23]= 15.93;
//输入数据,只输入流量即可
/*for (i=0;i<24;i++)
scanf("%f",&a[i]);*/
max = a[0]+a[1]+a[2];
for(i=1;i<21;i++)
{
tmp = a[i]+a[i+1]+a[i+2];
if(tmp > max)
{
max = tmp;
index = i;
}
}
printf("%d-%d",index,index+2);
return 0;
}