如果整数序列的后续数量大于前一个,则显示“增加”

时间:2014-10-13 20:55:00

标签: c

  

编写一个读取整数序列的程序,如果每个后续数字大于前一个数字,则打印“增加”,否则打印“不增加”。读取数字结束的结束时间是您读取负数。

这是我到目前为止所得到的:

#include <stdio.h>
int main()
{
    int a[100],i;

    for(i=0; ; i++)
    {
        scanf("%d",&a[i]);
        if(a[i]<0)
            break;
    }

    for(i=0;;i++)
    {
        if(a[i]<0)
            break;

        if(a[i+1]>a[i])
        {
            printf("increasing\n");
        }
        else if(a[i+1]<a[i])
            printf("not increasing\n");
    }

    return 0; 
}

示例输入:1 4 6 2 6 3 -1
样本输出:

increasing
increasing
not increasing
increasing
not increasing

我得到了:

increasing
increasing
not increasing
increasing
not increasing
not increasing

我的问题是如何删除最后一个不必要的“不增加”?

2 个答案:

答案 0 :(得分:3)

一个简单的解决方法是更改​​此测试(在第二个循环中),来自:

 if(a[i]<0)
    break;

为:

 if(a[i + 1]<0)
    break;

但请注意,这不是很强大,但它可能足以完成简单的家庭作业。

答案 1 :(得分:1)

无需使用数组即可简化程序编写。例如

#include <stdio.h>

int main(void) 
{
    int prev, next;

    if ( scanf( "%d", &prev ) == 1 && prev >= 0 )
    {
        while ( scanf( "%d", &next ) == 1 && next >= 0 )
        {
            if ( next > prev ) printf( "increasing\n" );
            else printf( "not increasing\n" );

            prev = next;
        }
    }

    return 0;
}

如果要输入数字序列

1 4 6 2 6 3 -1

然后输出

incresing
incresing
not increasing
incresing
not increasing

关于你的代码,然后在本声明中

if(a[i+1]>a[i])

a[i]是最后一个非负值时,您将它与结束的负数进行比较。

您可以将此条件替换为

if( a[i]<0 || a[i+1] < 0 ) break;

考虑到这个表达式

if( a[i+1] < 0 ) break;

是错误的,因为你的序列只能有一个元素,而这个元素可以是负数。:)