为什么给出错误的计数在这个问题中,我们必须找出有多少个元素比数组
#include的下一个元素大使用命名空间std;
int main() {
//number of testcases
int t;
cin>>t;
while(t--){
//taking number of elements in an array
int n,count;
cin>>n;
//taking array
int a[n];
count=0;
for(int i=1;i<=n;i++){
cin>>a[n];
}
//checking array
for(int j=1;j<=n-1;j++){
if(a[j]>a[j+1])
{
count++;
}
}
cout<<count<<endl;
}
return 0;
}
输入51 2 3 4 1预期的输出1通过以上代码输出2
有几个问题使用您的代码:
问题1
您将超出数组a
的边界,这将导致未定义行为,当你写
cin >> a[n]; //undefined behavior
注意,数组的索引从0
开始,而不是c++中的1
。
问题2
在标准c++中,数组的大小必须是编译时常量。这意味着以下代码是不正确的:
int n;
cin>>n;
int a[n]; //NOT STANDARD C++ BECAUSE n IS NOT A CONSTANT EXPRESSION
最好使用std::vector
而不是内置数组。
int n = 0;
std::cin >> n;
std::vector<int> a(n); //this creates a vector of size n
//take input from user
for(int& element: a)
{
std::cin >> element;
}
int count = 0;
for(int i = 0; i< n - 1; ++i)
{
if(a[i] > a[i+1])
{
++count;
}
}