解题思路:定义两个一样大小的数组,一个数组用来存放输入的数据,另一个数组则用来记录是否是负数的判断,然后对于第一个数组遍历,如果小于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 人评分
printf基础练习2 (C语言代码)浏览:648 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:689 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:778 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:631 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:910 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
1113题解浏览:823 |
回文数字 (C语言代码)浏览:2538 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
输入输出格式练习 (C语言代码)浏览:883 |