编写一个读取整数序列的程序,如果每个后续数字大于前一个数字,则打印“增加”,否则打印“不增加”。读取数字结束的结束时间是您读取负数。
这是我到目前为止所得到的:
#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
我的问题是如何删除最后一个不必要的“不增加”?
答案 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;
是错误的,因为你的序列只能有一个元素,而这个元素可以是负数。:)