c++ 为什么这里没有输出?[关闭]

bxjv4tth  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(186)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
我在codeforces上做问题268A,这是我写的代码:

  1. using namespace std;
  2. #include <iostream>
  3. #include <cmath>
  4. int main(){
  5. int n,a,counter=0;
  6. cin>>n;
  7. int colour[n];
  8. for (int i = 0;i<2*n;i++){
  9. cin>>a;
  10. colour[i]=a;
  11. }
  12. for (int i=0;i<2*n;i++){
  13. if (i%2==0){
  14. for (int k=0;k<2*n;k++){
  15. if ((k%2==1)&&(colour[i]==colour[k])){
  16. counter++;
  17. }
  18. }
  19. }
  20. }
  21. cout<<counter;
  22. }

当我输入

  1. 4
  2. 100 42
  3. 42 100
  4. 5 42
  5. 100 5

程序只是继续运行,并没有提供一个输出,而我期望的输出是5。
奇怪的是,当我将cout<<colour[i]<<endl;添加到第一个for循环的末尾时,我得到了counter的正确输出,程序结束。
有人能解释一下吗?

7gyucuyw

7gyucuyw1#

这是因为在本例中,colour数组只有4个位置,而for循环访问8个位置。要解决这个问题,请让colour的大小为2*n,而不是n

相关问题