c++冒泡排序的测试数据输入之后为何输出时前n-2个数据都变成了0?

墨染白筝
  • 147

感觉我的代码没什么毛病呀。
为什么输出都变成00000了

#include<iostream>
using namespace std;
int main(){
    int arr[10];
    //输入测试数据 
    for(int x = 0;x<10;x++){
        cin>>arr[x];
    }
    cout<<"输出测试数据:"<<endl;
    //输出测试数据 
        for(int x = 0;x<10;x++){
        cout<<arr[x]<<" ";
    }
    int a;
    cout<<endl;
    //冒泡排序 
    for(int i = 1;i<=9;i++){
        for(int j = 0;j<=9-i;j++){
            if(arr[j]>arr[j+1]){
                 a = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = arr[j];
            }
        }
    }
    //输出排序后的测试数据
    cout<<"输出排序后的测试数据:"<<endl; 
    for(int x = 0;x<10;x++){
        cout<<arr[x]<<" ";
    }
    
    return 0;
}

图片描述

回复
阅读 2.3k
2 个回答
✓ 已被采纳

if里面 进行数据交换的时候,写的好像有问题吧

    if(arr[j]>arr[j+1]){
         a = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = arr[j];
    }

看看这段代码,预先保存的 a 用到哪去了?这里是笔误还是真没弄懂如何交换?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏