题目大意:
给出一行数,以0结尾。输出这行数中递增的总次数和有多少段递增,然后求个平均值。递减也是一样
解题思路:
无
代码如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
int flag, temp, num;
int down, up, unknown;
int lod, lou, n;
float ans_down, ans_up;
while(scanf("%d", &num) && num != 0)
{
down=0;
up=0;
unknown=1;
flag=0;
lod=0;
lou=0;
temp=num;
n=1;
ans_down=ans_up=0;
while(scanf("%d", &num) && num!=0)
{
n++;
if(flag==0 && num>temp)
{
up += unknown;
lou++;
unknown=0;
flag=1;
temp=num;
continue;
}
else if(flag==0 && num==temp)
{
unknown++;
temp=num;
continue;
}
else if(flag==0 && num<temp)
{
down += unknown;
unknown=0;
lod++;
flag=-1;
temp=num;
continue;
}
else if(flag==1 && num>=temp)
{
up++;
temp=num;
continue;
}
else if(flag==1 && num<temp)
{
lod++;
down++;
flag=-1;
temp=num;
continue;
}
else if(flag==-1 && num<=temp)
{
down++;
temp=num;
continue;
}
else if(flag==-1 && num>temp)
{
lou++;
up++;
flag=1;
temp=num;
continue;
}
}
if(lou)ans_up=up * 1.0 / lou;
if(lod)ans_down = down * 1.0 /lod;
printf("Nr values = %d: %.6f %.6f\n",n, ans_up, ans_down);
}
return 0;
}
本文介绍了一种算法,用于统计一串数字中递增和递减序列的次数及长度,并计算平均递增和递减长度。通过扫描整串数字并跟踪当前趋势,该算法能够有效地处理输入并输出结果。
6337

被折叠的 条评论
为什么被折叠?



