我为类项目编写了这段代码:
#include<stdio.h>
int main()
{
int n = 0, i = 1, c = 0, d = 0, a = 0, b = 0, j = 1;
scanf("%d", &n);
while (i <= n)
{
b = a;
scanf("%d", &a);
if (a >= b)
{
i++;
}
if (a == b)
{
j++;
}
if (a < b)
{
i++;
break;
}
}
while ((i <= n) && (i != j + 2))
{
b = a;
scanf("\n%d", &a);
if (a < b)
{
i++;
}
if (a > b || a == b)
{
i++;
c = 1;
break;
}
}
if (c == 1)
{
while (i <= n)
{
scanf("\n%d", &a);
i++;
}
printf("No");
}
while (i <= n)
{
b = a;
scanf("\n%d", &a);
if (a <= b)
{
i++;
}
if (a > b);
{
i++;
break;
}
}
while (i <= n)
{
b = a;
scanf("\n%d", &a);
if (a > b)
{
i++;
}
if (a < b || a == b)
{
i++;
d = 1;
break;
}
}
if (d == 1)
{
while (i <= n)
{
scanf("\n%d", &a);
i++;
}
printf("No");
}
if (c != 1 && d != 1)
{
printf("Yes");
}
}
我期望这笔收入的输出: 6 4 4 3 2 3 2
是“不”。但相反,它是“是”。我在纸上完成了代码中的所有步骤,我自己得到的答案是正确的。但是,当我运行该程序时,它不是。有人可以解释一下原因吗?
答案 0 :(得分:1)
您的代码中出现错误,分号结束指令
while (i <= n)
{
b = a;
scanf("\n%d", &a);
if (a <= b)
{
i++;
}
if (a > b); // remove this semicolon
{
i++;
break;
}
}
编辑:为了清楚起见,正在结束&#34;如果&#34;指示,它就像一个空的&#34; if&#34;像:强>
if ( a > b ) { }
所以
i++;
break;
作为下一个指令执行