Kill_Tomatoes 2022-05-09 19:51 采纳率: 100%
浏览 146
已结题

c语言试题 绝对值排序

排序我们都做过,但是都是针对所有数值的大小,但是,如果我们把排序的条件改成以绝对值为排序的条件呢?
请你对给定的数据按照绝对值的大小进行从大到小的排序(输入数据已经保证没有绝对值相等的两个数)。请使用循环和数组实现。

输入

输入包含二行:
第一行包括一个正整数n(0 < n < 100)。
第二行有n个整数(范围不超过int),且两两之间用一个空格隔开。

输出

输出n行,每个整数占一行。

输入示例

3
3 -4 2

输出示例

-4
3
2

  • 写回答

1条回答 默认 最新

  • wusheng_happy 2022-05-12 21:08
    关注
    #include<stdio.h>
    #include<math.h>
    
    int arr[100];
    
    int main() {
        int n, i;
        scanf("%d", &n); //数组元素个数
        for (i = 0; i < n; i++) { //依次输入数组元素
            scanf("%d", &arr[i]);
        }
    
        //冒泡排序
        for (i = 0; i < n; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (abs(arr[j]) < abs(arr[j + 1])) { //只需加上绝对值比较即可
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    
        //输出
        for (i = 0; i < n; i++) {
            printf("%d\n", arr[i]);
        }
    
        return 0;
    }
    

    只需比较时加上绝对值就可以了

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 已采纳回答 5月16日
  • 创建了问题 5月9日