htz


私信TA

用户名:dotcpp0633574

访问量:210

签 名:

等  级
排  名 4844
经  验 1628
参赛次数 0
文章发表 2
年  龄 19
在职情况 学生
学  校 华中科技大学
专  业

  自我简介:

TA的其他文章

解题思路:定义两个一样大小的数组,一个数组用来存放输入的数据,另一个数组则用来记录是否是负数的判断,然后对于第一个数组遍历,如果小于0,则转化为它的相反数,否则不做处理,然后使用冒泡排序或者选择排序(我这里用的是选择排序)将第一个也就是存放数据的数组进行排序,关键在于你还要对第二个数组执行与第一个数组相同的操作,否则数据位置变了,之前对负数的记录也就没用了,最后根据第二个数组判断输出是否带负号。

注意事项:
第二个数组也要跟着第一个数组进行交换操作。
参考代码:

int main()

{

    int arr[100] = { 0 };

    int n = 1;

    while (scanf("%d",&n)!=EOF&&n) {

    int arr2[100] = { 0 };

    for (int i = 0; i < n; i++)

    scanf("%d", &arr[i]);

    for (int i = 0; i < n; i++) {

    if (arr[i] < 0)

    arr[i] = 0 - arr[i], arr2[i] = 1;

     }

     for (int i = 0; i < n; i++) {

           for (int j = i; j >= 0; j--) {

           if (arr[j - 1] < arr[j] && j - 1 >= 0) {

                    int temp = arr[j];

                    arr[j] = arr[j - 1];

                    arr[j - 1] = temp;

                    temp = arr2[j];

                    arr2[j] = arr2[j - 1];

                   arr2[j - 1] = temp;

          }

      }

    }

for (int i = 0; i < n; i++) {

if (arr2[i] == 1)

printf("-%d", arr[i]);

else

printf("%d", arr[i]);

if (i != n - 1)

printf(" ");

}

printf("\n");

}

return 0;

}



 

0.0分

0 人评分

  评论区

  • «
  • »