张铎龙 2019-11-06 13:24 采纳率: 100%
浏览 283

一道关于C++ 绝对值排序的问题,我的代码的运行结果满足绝大多数情况的输出,对一些特殊情况出错,但并未查明其原因,请高手指点

图片说明

#include<stdio.h>
using namespace std;
int main(){
    int n,line[100],line_0[100],temp;
    while(scanf("%d",&n)){
        if(n==0){
            return 0;
        }
        for(int i=0;i<n;i++){
            scanf("%d",&line[i]);
        }
        for(int i=0;i<n;i++){
            line_0[i]=line[i];
        }
        for(int i=0;i<n;i++){
            if(line_0[i]<0) line_0[i]=-line_0[i];
        }
        for(int i=1;i<n;i++){
            for(int j=0;j<i;j++){
                if(line_0[j]<line_0[j+1]){
                    temp=line[j];
                    line[j]=line[j+1];
                    line[j+1]=temp;
                    temp=line_0[j];
                    line_0[j]=line_0[j+1];
                    line_0[j+1]=temp;
                }
            }
        }
        for(int i=0;i<n-1;i++){
            printf("%d ",line[i]);
        }
        printf("%d\n",line[n-1]);
    }
    return 0;
}

不知道这段代码哪里有问题,无法对4 0 1 2 -3正确操作进行排序,请高手指点
补充:我的思路是创建两个一样的数组line[100]与line_0[100],操作line_0[100],使其中所有的负数变成正数,然后对line_0[100]进行冒泡排序,同时将line_0[100]中元素的位置移动的操作附加到原数组上,从而实现排序

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作