@秋野 2023-03-04 20:41 采纳率: 0%
浏览 25

为什么c++会多输出一行

代码目的实现左边升序,右边降序,但结果为什么会多输出一行输入信息

bool comp(int lnum,int rnum){
    if(lnum %2 == 0 && rnum%2 ==1){
        return true;
    } else if(lnum %2 == 0 && rnum %2 == 0 && lnum <rnum){
        return true;
    } else if(lnum %2 == 1 && rnum%2 == 1 && lnum >rnum){
        return true;
    } else{
        return false;
    }
}

void sortnum(){
    int arr[10];
    while (scanf("%d%d%d%d%d",arr,arr+1,arr+2,arr+3,arr+4) != EOF){
        sort(arr,arr+5, comp);

        for (int i= 0;i<5;i++){
            printf("%d ",arr[i]);
        }
        printf("\n");
    }
}
int main() {
//    std::cout << "Hello, World!" << std::endl;
    system("chcp 65001");
    sortnum();
    return 0;
}

1 4 2 5 2//输入
1 4 2 5 2
2 2 4 5 1//输出

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-04 23:59
    关注

    “Devil组”引证GPT后的撰写:
    在代码中,每次输入一组数字后,会调用sort函数进行排序,并将结果输出。然而,由于输入的数字不止一组,因此在输入完最后一组数字后,程序会再次调用sort函数进行一次排序并输出结果,这就是多输出的原因。

    要解决这个问题,可以在while循环中添加一个判断条件,当输入的数字不满足要求时,退出循环,即可避免多输出的情况。例如:

    void sortnum(){
    int arr[10];
    while (scanf("%d%d%d%d%d",arr,arr+1,arr+2,arr+3,arr+4) != EOF){
    if(arr[0]==-1 && arr[1]==-1 && arr[2]==-1 && arr[3]==-1 && arr[4]==-1){
    break;
    }
    sort(arr,arr+5, comp);
        for (int i= 0;i<5;i++){
            printf("%d ",arr[i]);
        }
        printf("\n");
    }
    }
    
    

    在这个例子中,当输入的5个数字都为-1时,程序会退出循环,避免了多输出的情况。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月4日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件