因此,我将其编写为在代码升序时打印“是”,而在代码不升序时打印“否”。但是如果我从头开始使用相等的值,则程序将打印错误的结果。不明白为什么即使不满足条件也要运行if语句。
#include <iostream>
using namespace std;
int main()
{
int N, i;
scanf("%d", &N);
int arr[N];
for(i = 1; i <= N; i++)
{
scanf("%d", &arr[i - 1]);
}
for(i = 1; i <= N; i++)
{
if(arr[i - 1] > arr[i])
{
printf("No");
return 0;
}
}
printf("Yes");
return 0;
}
答案 0 :(得分:1)
一个偶然的错误,您跳过数组的第一个元素,而跳过最后一个元素。如果您的数组包含N
个元素,则其范围将从array[0]
到array[N-1]
。在此更改:
for(i = 1; i <= N; i++){
在这里:
for(i = 0; i < N; i++){
您在其中进行检查的第二个for(i = 1; i <= N; i++)
可以从1
开始,因为您在其中查看arr[i - 1]
,但是它应该是i < N
而不是i <= N
但是。
此外,int arr[N];
在C ++中不起作用(某些编译器会容忍它,但并非所有人都能容忍)。尝试使用std::vector<int> arr(N);
。