【问题标题】:problem in coding [duplicate]编码问题[重复]
【发布时间】:2010-09-26 10:29:53
【问题描述】:

可能重复:
Sorting in arrays

int A[5]={1,5,3,2,4};
for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
        if(A[j]>A[j+1])
        {
           int t=A[j];
           A[j]=A[j+1];
           A[j+1]=t;
        } 
    }
}
for(i=0;i<5;i++)
   cout<<A[i];

所需的输出必须是 1,2,3,4,5 但我的输出是 0,1,2,3,4。 我的代码有什么问题?

【问题讨论】:

  • 我已重新格式化以使您的代码更具可读性,希望我所做的一切正常吗?
  • 这不可能是完整的代码,因为你不能在函数体之外有非声明语句。
  • 只是为了好玩,您是否实际执行了您提供的代码。它实际上输出 12345。:)
  • @bjarkef 此代码会触发未定义的行为,因此如果 A[5] 处的值大于/等于 5,它可能输出 12345。

标签: c++


【解决方案1】:

首先,学会正确缩进。这并不难。其次,看起来你在做一个排序功能。

问题是您在两个 for 循环中都使用了变量 j。不。将一个更改为 k,或另一个变量。我假设您正在尝试用 j+1 引用第二个 j。这只是将 j 加 1。

请问,你有编码经验吗?

而且你应该已经说明你的代码有什么问题,你期望什么以及你得到了什么。

【讨论】:

  • 我在循环中使用了 i 和 j,而不是在 for 循环中使用了 j
  • A[j+1] 指的是下一个元素,而不是给那个元素加 1
【解决方案2】:

看起来您正在尝试冒泡排序,为什么不 read up on it 。我相信你可以自己动手。

【讨论】:

    【解决方案3】:

    您可以改用Sort,效果很好!

    int A[5]={1,5,3,2,4};
    vector<int> vec(A, A+5);
    
    sort(vec.begin(), vec.end()); 
    

    【讨论】:

    • 我认为这是作弊,因为作者似乎正在学习如何对自己进行排序:)
    • 我刚刚问过我的代码有什么问题,为什么它没有给出想要的输出不要认为是负面的 Benoit
    • 这不是作弊,除非有规定不允许他使用它。 :) 这是我认为最简单的方法。有些轮子不需要重新发明
    【解决方案4】:

    你需要将你的内循环限制在

    int A[5]={1,5,3,2,4};
    for(int i=0;i<5;i++){
        for(int j=0;j<4;j++){
            if(A[j]>A[j+1])
            {
               int t=A[j];
               A[j]=A[j+1];
               A[j+1]=t;
            } 
        }
    }
    for(i=0;i<5;i++)
       cout<<A[i];
    

    【讨论】:

    • 将 j 更改为 4 后输出为 2 3 4 5 0
    • 请使用新代码更新您的问题。您是否复制并粘贴了我的代码?
    【解决方案5】:

    您的程序不会产生该输出。当 j == 4 时,它将在 A[j+1] 处死亡。在最后一个循环中,您需要编写 for(int i = 0; i

    for(int i = 0; i < 5; i++){
        for(int j = i + 1; j < 5; j++){
            if(A[j] < A[i])
            {
                int t = A[j];
                A[j] = A[i];
                A[i] = t;
            } 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 2023-04-10
      • 2018-08-10
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多